国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

使用GatewayClient調(diào)用getAllClientSessions獲取不到任何數(shù)據(jù)

詹少

使用GatewayClient獲取所有在線客戶端(getAllClientSessions)的時候,返回的總是空數(shù)據(jù)(GatewayClient跟worker不在同一個服務(wù)器,使用了Gateway::$registerAddress設(shè)置公網(wǎng)ip,并且是可以連通的),看了下代碼,發(fā)現(xiàn)getAllGatewayAddressesFromRegister這個函數(shù)里面返回的地址全部都是"127.0.0.1:端口"這樣的地址,也就是里面有這么一段代碼:

$client = stream_socket_client('tcp://' . self::$registerAddress, $errno, $errmsg, self::$connectTimeout);
if (!$client) {
    throw new Exception('Can not connect to tcp://' . self::$registerAddress . ' ' . $errmsg);
}
fwrite($client, '{"event":"worker_connect","secret_key":"' . self::$secretKey . '"}' . "\n");
stream_set_timeout($client, 1);
$ret = fgets($client, 655350);

這個返回的是{"event":"broadcast_addresses","addresses":}這種,那我就測試了下,在GatewayClient本機上面啟動另外一個worker,發(fā)現(xiàn)getAllClientSessions取到的竟然是本機的socket客戶端,也就是說Gateway::$registerAddress不管設(shè)置了172.0.0.1還是設(shè)置的公網(wǎng)服務(wù)器ip,getAllClientSessions返回的都是本機上面的worker客戶端信息

問題總結(jié):Gateway::$registerAddress設(shè)置公網(wǎng)服務(wù)器的情況下,getAllClientSessions函數(shù)獲取到的是當(dāng)前服務(wù)器的客戶端信息,無法獲取目標(biāo)ip的worker服務(wù)器的客戶端信息。

4043 1 0
1個回答

walkor 打賞

如果GatewayClient和GatewayWorker不是在同一臺服務(wù)器上,則需要先將start_gateway.php中的lanIp改成當(dāng)前服務(wù)器的內(nèi)網(wǎng)ip(如果不在一個內(nèi)網(wǎng)可改成公網(wǎng)ip)。

摘自手冊 http://doc2.workerman.net/326149

  • 詹少 2018-05-02

    ?。。。?!registerAddress和lanIp搞混了

年代過于久遠,無法發(fā)表回答
??