利用tp5自帶的thphp-queue redis擴(kuò)展發(fā)送消息,在cmd運(yùn)行命令后報(bào)錯(cuò)如下圖,注意:Gateway::sendToClient是沒有報(bào)錯(cuò),能夠成功發(fā)送消息,但是Gateway::sendToGroup就發(fā)送失敗,報(bào)錯(cuò)了,如下圖
?
還有的就是,sendToClient和sendToGroup在其他地方是沒有問(wèn)題的能夠成功發(fā)送消息,而且也驗(yàn)證了發(fā)送組ID(roomId),數(shù)據(jù)類型也是一樣的int類型,錯(cuò)誤提示不能連接1236端口,但是我根部就沒有開啟過(guò)這個(gè)端口。
?
以下是Gregister注冊(cè)代碼:
class Gregister
{
? ? public function __construct(){
? ? ? ? // register 服務(wù)必須是text協(xié)議
? ? ? ? $register = new Register('text://0.0.0.0:1238');
? ? ? ? // 如果不是在根目錄啟動(dòng),則運(yùn)行runAll方法
? ? ? ? if(!defined('GLOBAL_START'))
? ? ? ? {
? ? ? ? ? ? Worker::runAll();
? ? ? ? }
? ? }
}
服務(wù)能夠成功運(yùn)行的,如下圖
?
你gateway的 startPort 配置的啥?
$gateway->startPort = 2900;
// 服務(wù)注冊(cè)地址
$gateway->registerAddress = '127.0.0.1:1238';
那startPort沒問(wèn)題,username同學(xué)回復(fù)了解決方案,不過(guò)我感覺不科學(xué)啊,肯定是有地方在連 1236 端口,你先搜索下你整個(gè)項(xiàng)目代碼樹看是不是有 1236;另外 netstat 下1236端口啥情況。
還有個(gè)問(wèn)題就是windows里面運(yùn)行g(shù)atewayworker是沒有問(wèn)題的,
[attach]1455[/attach]
?
?
?
但是在linux上是成功運(yùn)行的,客戶端就不能連接
[attach]1454[/attach]
?
是不是linux上少了
GameGateway ? ? ? ? ?websocket://0.0.0.0:30006 ? ? ? ? ? 4 ? ? ? ?
這個(gè)端口沒有啟動(dòng),代碼是一樣的,是Linux上的環(huán)境要另外設(shè)置嗎?
1、GameGateway 肯定得啟動(dòng)呢,GameGateway默認(rèn)會(huì)啟動(dòng)兩類端口,一個(gè)是對(duì)外的面向客戶端的監(jiān)聽端口,一類就是startPort所指的內(nèi)網(wǎng)監(jiān)聽端口,這個(gè)businessworker 要與之通信連接。
2、只啟動(dòng)Register服務(wù)沒啥意義,Register服務(wù)是用來(lái)給gateway 和businessworker 兩類進(jìn)程提供間接的通信服務(wù)的,一般啟動(dòng)完以后基本就不用關(guān)注了。
我記得手冊(cè)說(shuō)先要設(shè)置下Gateway::$rgisterAddress = 'xxxxx'; 才能調(diào)用 Gateway::sendToGroup啊
推測(cè)題主可能問(wèn)題就在這里~~