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

0

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 - 常年游走于 Linux、PHP、C、VIM 之间【http://www.phpcreeper.com】

赞同来自:


  1. 根据你的描述来看,首先你设置的这个外网IP并不属于你的gatewayworker所在的服务器,所以无法监听所谓的公网IP。

  2. 分布式部署 lanIp = 内网ip 

  3. 防火墙放行 lanIp 以及 startPort 对应的那几个端口 以及 register服务所在的端口ip 

  4. 最后别忘记设置  Gateway::$registerAddress = 'ip:port'; // register服务所在的端口ip

要回复问题请先登录注册