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

0


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



请大神指点下。麻烦了

已邀请:

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会报错

要回复问题请先登录注册