使用GatewayClient和GatewayWorker不在同一台服务器上连接出现报错问题
1、看了以上手册我把start_gateway.php中的lanIp 修改为了外网IP。
2、修改后图片以上图
启动报错消息
Warning: stream_socket_server(): unable to connect to tcp://47.75.x.x:2900 (Cannot assign requested address) in /www/wwwroot/GatewayWorker/vendor/workerman/workerman/Worker.php on line 2226
修改完成后,当我启动 GatewayWorker,报错说无法连接2900 端口,我服务器是云服务器,安全组已全部打开了端口。搭建环境使用宝塔,已经在宝塔【安全】 也把端口全部打开了。
现在主要是GatewayClient 无法发送请求包,如果我把start_gateway.php->lanip修改 内网IP 或者 127.0.0.1 启动GatewayWorker 正常状态 并且使用ws连接没有任何问题,现在问题主要是 把lanip修改外网就无法启动,如果不修改 使用 GatewayClient 将报错以下图片
stream_socket_client(): unable to connect to tcp://127.0.0.1:2900
请大神指点下。麻烦了
没有找到相关结果
已邀请:
6 个回复
xiuwang
赞同来自: paoshen2020
阿里云 腾讯云环境,如果GatewayWorker 和 GatewayClient 不在一个局域网的话,GatewayClient无法与GatewayWorke通讯,不用折腾了。
如果不在一个局域网,建议按照手册使用开一个内部通讯端口那个方案
eyunzhu
赞同来自: wglt
我解决了,解决办法如下:https://eyunzhu.com/1302.html
blogdaren - 常年游走于 Linux、PHP、C、VIM 之间【http://www.phpcreeper.com】
赞同来自:
有两个互不相干的问题:
1、
Warning: stream_socket_server(): unable to connect to tcp://47.75.x.x:2900 (Cannot assign requested address)
这个报错表明47.75.x.x 这个IP并不是当前机器的真实公网IP,这个可以通过命令ip a
来验证下2、对于gatewayclient的报错很好理解,单机环境填写127.0.0.1,但是你两台机器不在同一台服务器肯定不能填写127.0.0.1啦,进一步如果在同一个内网就填内网IP,否则填写真实的公网IP。
paoshen2020
赞同来自:
方法三没有问题。
使用方法一 出现
Warning: stream_socket_server(): unable to connect to tcp://47.75.x.x:2900 (Cannot assign requested address)
这是什么情况呢。
eyunzhu
赞同来自:
请问解决了吗?
我GatewayWorker部署在阿里云服务器上,GatewayClient在其他服务器
阿里云服务器有个公网ip47.95.XX.XX和私网IP 172.17.XX.XX
$gateway->lanIp 直接使用公网ip,GatewayWorker启动不成功,报错:stream_socket_server(): unable to connect to tcp://47.95.XX.XX:2901
如果$gateway->lanIp 使用私网ip,GatewayWorker启动成功,但使用GatewayClient会报错
yiarce - 90IT
赞同来自:
分开部署,不嫌麻烦可以直接写IP归档文件,然后修改源码中方法回调的gatewayworker地址