GatewayWorker部署在阿里云,想在其它主机用GatewayClient发送消息

GatewayWorker部署在阿里云,想在其它主机用GatewayClient发送消息
 
一、如果Gateway启动文件中lanIp设置为127.0.0.1或0.0.0.0,客户端可以正常连接websocket,但GatewayClient会按照127.0.0.1或0.0.0.0的ip进行连接,肯定失败。
 
二、如果Gateway启动文件中lanIp设置为阿里云主机的外网ip,启动GatewayWorker服务的时候,会一直报错:
stream_socket_server(): unable to connect to tcp://xx.xx.xx.xx:xxx (Cannot assign requested address)
查看文档,应该是阿里云服务器的问题:


如果您是云服务器(阿里云/腾讯云等)用户,注意您的公网ip实际可能是个代理ip(例如阿里云的专有网络),公网ip并不属于当前的服务器,所以无法通过公网ip监听。虽然不能用公网ip监听,但是仍然可以通过0.0.0.0来绑定。


 
现在问题卡到这了,请大佬指点,有什么解决的办法?
已邀请:

blogdaren - 喜欢分享的PHP码农【http://www.blogdaren.com】

赞同来自:

1. 根据你的描述来看,首先你设置的这个外网IP并不属于你的gatewayworker所在的服务器,所以无法监听所谓的公网IP。
2. 分布式部署 lanIp = 内网ip 
3. 防火墙放行 lanIp 以及 startPort 对应的那几个端口 以及 register服务所在的端口ip 
4. 最后别忘记设置  Gateway::$registerAddress = 'ip:port'; // register服务所在的端口ip

要回复问题请先登录注册