web项目中直接进行下面调用
Gateway::isOnline("7f0000010b5600000006")
报错
[attach]193[/attach]
问题补充,在服务器A部署了GatewayWorker
在服务器B使用GatewayClient发送消息
在服务器A部署了GatewayWorker,那你在B调用为什么要 connect 127.0.0.1?
直接用的GatewayClient,地址是他内部解析出来的
我也比较纳闷,不晓得是不是哪里配置的问题,但是我是按照手册上面配置的啊
贴下workerman的status start_gateway.php代码 和GatewayClient调用的代码
见下面回复
GatewayWorker服务器和客户端是可以正常通信的
注册服务器地址是直接改在引入的Gateway.php里面的
调用就是按照手册写,就只有一行
Gateway::isOnline("7f0000010b5600000006") [attach]194[/attach]
[attach]195[/attach]
调用代码应该是这样
Gateway::$registerAddress = 'A服务器ip:1238'; Gateway::isOnline("7f0000010b5600000006");
另外把start_gateway.php中的lanip改成服务器A的ip(要在其它服务器上推送不能写127.0.0.1),如果服务器A B都在一个内网,ip就写成服务器A的内网ip,否则写外网ip
改了之后启动报错
$gateway->name = 'YourAppGateway'; // gateway进程数 $gateway->count = 4; // 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '114.119.44.225';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000 // 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口 $gateway->startPort = 2900; // 服务注册地址 $gateway->registerAddress = '127.0.0.1:1238';
改成外网ip后启动 [attach]197[/attach] 报错
应该lanip写错了,看看你服务器IP写的是不是你那个服务器的IP
没有错,写内网ip就可以,写外网ip就启动不了
出错的服务器运行命名 ip addr 贴下
@1:见下面回复
[attach]198[/attach]
ip addr 里面根本没这个ip 114.119.44.225的网卡嘛 lanip尽量用内网ip,内网ip能用就用内网ip吧
什么意思,不懂,我的域名也是绑定的这个ip,ssh也是连接的这个ip啊
主要是两个服务器不在同一个子网内
ipaddr 上看ip地址114.119.44.225不属于这台服务器,所以workerman监听不了这个ip。可以找技术人员看下为什么这样,有可能114.119.44.225只是个代理服务器
解决了,监听还是内网的地址,GatewayClient调用时clientIdToAddress,转换的ip改成服务器外网ip就行了,十分感谢!
聪明
@713:clientIdToAddress 转换后的结果Array ( [local_ip] => 2130706433 [local_port] => 2900 [connection_id] => 1 ),怎么改成你说的 转换的ip改成服务器外网ip??
同问楼上问题
start_register.php start_gateway.php start_businessworker.php 里的ip都改为服务器的真实ip ,不要用127.0.0.1
/** * client_id到通讯地址的转换 * @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("服务器外网ip"); // return unpack('Nlocal_ip/nlocal_port/Nconnection_id' ,pack('H*', $client_id)); return $result; }
问题补充,在服务器A部署了GatewayWorker
在服务器B使用GatewayClient发送消息
在服务器A部署了GatewayWorker,那你在B调用为什么要 connect 127.0.0.1?
直接用的GatewayClient,地址是他内部解析出来的
我也比较纳闷,不晓得是不是哪里配置的问题,但是我是按照手册上面配置的啊
贴下workerman的status
start_gateway.php代码
和GatewayClient调用的代码
见下面回复
GatewayWorker服务器和客户端是可以正常通信的
注册服务器地址是直接改在引入的Gateway.php里面的
调用就是按照手册写,就只有一行
Gateway::isOnline("7f0000010b5600000006")
[attach]194[/attach]
[attach]195[/attach]
调用代码应该是这样
Gateway::$registerAddress = 'A服务器ip:1238';
Gateway::isOnline("7f0000010b5600000006");
另外把start_gateway.php中的lanip改成服务器A的ip(要在其它服务器上推送不能写127.0.0.1),如果服务器A B都在一个内网,ip就写成服务器A的内网ip,否则写外网ip
改了之后启动报错
$gateway->name = 'YourAppGateway';
// gateway进程数
$gateway->count = 4;
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '114.119.44.225';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
$gateway->startPort = 2900;
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:1238';
改成外网ip后启动
[attach]197[/attach]
报错
应该lanip写错了,看看你服务器IP写的是不是你那个服务器的IP
没有错,写内网ip就可以,写外网ip就启动不了
出错的服务器运行命名
ip addr
贴下
@1:见下面回复
[attach]198[/attach]
ip addr 里面根本没这个ip 114.119.44.225的网卡嘛
lanip尽量用内网ip,内网ip能用就用内网ip吧
什么意思,不懂,我的域名也是绑定的这个ip,ssh也是连接的这个ip啊
主要是两个服务器不在同一个子网内
ipaddr 上看ip地址114.119.44.225不属于这台服务器,所以workerman监听不了这个ip。可以找技术人员看下为什么这样,有可能114.119.44.225只是个代理服务器
解决了,监听还是内网的地址,GatewayClient调用时clientIdToAddress,转换的ip改成服务器外网ip就行了,十分感谢!
聪明
@713:clientIdToAddress 转换后的结果Array ( [local_ip] => 2130706433 [local_port] => 2900 [connection_id] => 1 ),怎么改成你说的 转换的ip改成服务器外网ip??
同问楼上问题
start_register.php start_gateway.php start_businessworker.php
里的ip都改为服务器的真实ip ,不要用127.0.0.1