web項(xiàng)目中直接進(jìn)行下面調(diào)用
Gateway::isOnline("7f0000010b5600000006")
報(bào)錯(cuò)
[attach]193[/attach]
問(wèn)題補(bǔ)充,在服務(wù)器A部署了GatewayWorker
在服務(wù)器B使用GatewayClient發(fā)送消息
調(diào)用就是按照手冊(cè)寫,就只有一行
Gateway::isOnline("7f0000010b5600000006")
[attach]194[/attach]
[attach]195[/attach]
$gateway->name = 'YourAppGateway';
// gateway進(jìn)程數(shù)
$gateway->count = 4;
// 本機(jī)ip,分布式部署時(shí)使用內(nèi)網(wǎng)ip
$gateway->lanIp = '114.119.44.225';
// 內(nèi)部通訊起始端口,假如$gateway->count=4,起始端口為4000
// 則一般會(huì)使用4000 4001 4002 4003 4個(gè)端口作為內(nèi)部通訊端口
$gateway->startPort = 2900;
// 服務(wù)注冊(cè)地址
$gateway->registerAddress = '127.0.0.1:1238';
改成外網(wǎng)ip后啟動(dòng)
[attach]197[/attach]
報(bào)錯(cuò)
ip addr 里面根本沒(méi)這個(gè)ip 114.119.44.225的網(wǎng)卡嘛
lanip盡量用內(nèi)網(wǎng)ip,內(nèi)網(wǎng)ip能用就用內(nèi)網(wǎng)ip吧
ipaddr 上看ip地址114.119.44.225不屬于這臺(tái)服務(wù)器,所以workerman監(jiān)聽不了這個(gè)ip。可以找技術(shù)人員看下為什么這樣,有可能114.119.44.225只是個(gè)代理服務(wù)器
解決了,監(jiān)聽還是內(nèi)網(wǎng)的地址,GatewayClient調(diào)用時(shí)clientIdToAddress,轉(zhuǎn)換的ip改成服務(wù)器外網(wǎng)ip就行了,十分感謝!
@713:clientIdToAddress 轉(zhuǎn)換后的結(jié)果Array ( [local_ip] => 2130706433 [local_port] => 2900 [connection_id] => 1 ),怎么改成你說(shuō)的 轉(zhuǎn)換的ip改成服務(wù)器外網(wǎng)ip??
start_register.php start_gateway.php start_businessworker.php
里的ip都改為服務(wù)器的真實(shí)ip ,不要用127.0.0.1
/**
* client_id到通訊地址的轉(zhuǎn)換
* @return array
*/
public static function clientIdToAddress($client_id)
{
if(strlen($client_id) !== 20)
{
throw new \Exception("client_id $client_id is invalid");
}
$result = unpack('Nlocal_ip/nlocal_port/Nconnection_id' ,pack('H*', $client_id));
$result = ip2long("服務(wù)器外網(wǎng)ip");
// return unpack('Nlocal_ip/nlocal_port/Nconnection_id' ,pack('H*', $client_id));
return $result;
}