項目寫在Linux版本下,按照教程轉到window下運行、gatewayWorker,發(fā)下onMessage接受不了信息,用webSocket能夠連上,也能接受gateway的心跳信息,就是gateway端不能接受web的信息,
php start_register.php start_gateway.php start_businessworker.php start_tcp.php 啟動后提示
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.5 PHP version:5.4.16
------------------------ WORKERS -------------------------------
worker listen processes status
Register text://0.0.0.0:1238 1
WebsocketGateway Websocket://0.0.0.0:1129 1
YourAppBusinessWorker none 1
TcpGateway tcp://0.0.0.0:8282 1
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.
Waring: Event::onMessage is not callable
很遺憾的告訴樓主,其實作者的回復是錯的。。。。
正確的修改方式:
找到y(tǒng)ourProj下的start_businessworker.php
然后
<?php
/**
* This file is part of workerman.
*
* Licensed under The MIT License
* For full copyright and license information, please see the MIT-LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @author walkor<walkor@workerman.net>
* @copyright walkor<walkor@workerman.net>
* @link http://wtbis.cn/
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
use \Workerman\Worker;
use \Workerman\WebServer;
use \GatewayWorker\Gateway;
use \GatewayWorker\BusinessWorker;
use \Workerman\Autoloader;
// 自動加載類
require_once __DIR__ . '/../../Workerman/Autoloader.php';
Autoloader::setRootPath(__DIR__);
// bussinessWorker 進程
$worker = new BusinessWorker();
// worker名稱
$worker->name = 'DemoBusinessWorker';
// bussinessWorker進程數量
$worker->count = 4;
// 服務注冊地址
$worker->registerAddress = '127.0.0.1:2688';
// 需要將eventHandler的默認值Events修改成Event就可以了
$worker->eventHandler = 'Event';
// 如果不是在根目錄啟動,則運行runAll方法
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}
設置$worker->eventHandler = 'Event'; 是錯誤做法,因為會和Event擴展沖突,會導致Events::onMessage is not callable。