有时候需要在非GatewayWorker环境中向客户端推送数据。
使用使用GatewayClient客户端推送
按照要求
如果GatewayClient和GatewayWorker不是在同一台服务器上,则需要先将start_gateway.php中的lanIp改成当前服务器的内网ip(如果不在一个内网可改成公网ip)。
把$gateway->lanIp改为了公网ip
然而却出现了这样的错误
Warning: stream_socket_server(): unable to connect to tcp://115.111.111.101:2903 (Cannot assign requested address) in /data/wwwroot/chat/vendor/workerman/workerman/Worker.php on line 1443
exception 'Exception' with message 'Cannot assign requested address' in /data/wwwroot/chat/vendor/workerman/workerman/Worker.php:1445
Stack trace:
#0 /data/wwwroot/chat/vendor/workerman/gateway-worker/src/Gateway.php(478): Workerman\Worker->listen()
#1 : GatewayWorker\Gateway->onWorkerStart(Object(GatewayWorker\Gateway))
#2 /data/wwwroot/chat/vendor/workerman/workerman/Worker.php(1520): call_user_func(Array, Object(GatewayWorker\Gateway))
#3 /data/wwwroot/chat/vendor/workerman/gateway-worker/src/Gateway.php(279): Workerman\Worker->run()
#4 /data/wwwroot/chat/vendor/workerman/workerman/Worker.php(939): GatewayWorker\Gateway->run()
#5 /data/wwwroot/chat/vendor/workerman/workerman/Worker.php(902): Workerman\Worker::forkOneWorker(Object(GatewayWorker\Gateway))
#6 /data/wwwroot/chat/vendor/workerman/workerman/Worker.php(1053): Workerman\Worker::forkWorkers()
#7 /data/wwwroot/chat/vendor/workerman/workerman/Worker.php(437): Workerman\Worker::monitorWorkers()
#8 /data/wwwroot/chat/start.php(22): Workerman\Worker::runAll()
#9 {main}
WORKER EXIT UNEXPECTED
worker exit with status 64000
worker exit with status 64000
worker exit with status 64000
使用的是腾讯云云
我遇到过这个问题,因为腾讯云公网ip是代理服务器的ip,不是你服务器的ip导致的。
他们做了映射,访问代理服务器,转发到你的服务器上。
也就是说腾讯云给你的公网ip根本不属于你当前服务器。
用ifconfig能看到本机ip,能看到本机ip里根本没有你的公网ip。
好滴,谢谢,是滴就是这样原因,start_gateway.php中的lanIp改成0.0.0.0即可
0.0.0.0不行啊,应该填写实际的ip地址,不然gatewayclient连不上的。
@1653:具体是怎么配置的?
多谢大佬 遇到同样的问题 确实是这个原因。