使用GatewayClient和GatewayWorker不在同一台服务器上连接出现报错问题

paoshen2020

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

请大神指点下。麻烦了

3890 6 0
6个回答

blogdaren

有两个互不相干的问题:
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 2020-03-01

    谢谢,刚才我也找到一篇文章【https://wenda.workerman.net/question/4734
    好像是阿里云服务器的问题,可是我也按你方法尝试使用【ip a】查询出来一个内网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会报错

xiuwang

阿里云 腾讯云环境,如果GatewayWorker 和 GatewayClient 不在一个局域网的话,GatewayClient无法与GatewayWorke通讯,不用折腾了。

如果不在一个局域网,建议按照手册使用开一个内部通讯端口那个方案

eyunzhu

我解决了,解决办法如下:https://eyunzhu.com/1302.html

  • wglt 2020-05-19

    这个方法有效,自己亲测可以。感谢。

yiarce

分开部署,不嫌麻烦可以直接写IP归档文件,然后修改源码中方法回调的gatewayworker地址

  • 暂无评论
年代过于久远,无法发表回答
🔝