有時(shí)候需要在非GatewayWorker環(huán)境中向客戶(hù)端推送數(shù)據(jù)。
使用使用GatewayClient客戶(hù)端推送
按照要求
如果GatewayClient和GatewayWorker不是在同一臺(tái)服務(wù)器上,則需要先將start_gateway.php中的lanIp改成當(dāng)前服務(wù)器的內(nèi)網(wǎng)ip(如果不在一個(gè)內(nèi)網(wǎng)可改成公網(wǎng)ip)。
把$gateway->lanIp改為了公網(wǎng)ip
然而卻出現(xiàn)了這樣的錯(cuò)誤
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
使用的是騰訊云云
我遇到過(guò)這個(gè)問(wèn)題,因?yàn)轵v訊云公網(wǎng)ip是代理服務(wù)器的ip,不是你服務(wù)器的ip導(dǎo)致的。
他們做了映射,訪(fǎng)問(wèn)代理服務(wù)器,轉(zhuǎn)發(fā)到你的服務(wù)器上。
也就是說(shuō)騰訊云給你的公網(wǎng)ip根本不屬于你當(dāng)前服務(wù)器。
用ifconfig能看到本機(jī)ip,能看到本機(jī)ip里根本沒(méi)有你的公網(wǎng)ip。