我把原Http請(qǐng)求遷移到了Wss下。
背景:
Nginx轉(zhuǎn)發(fā)到Wss 端口1下。
Workerman開(kāi)啟了端口1、2分別用于監(jiān)聽(tīng)原Http請(qǐng)求與Php主動(dòng)推送消息。
推送流程:
php調(diào)用端口2推到Workerman,Workerman推送到建立連接的客戶端,Workerman向php返回發(fā)送結(jié)果。
工作流程如下:
1.客戶端發(fā)起處理請(qǐng)求。
客戶端請(qǐng)求由Nginx轉(zhuǎn)發(fā)到Workerman 端口1。
端口1 Curl 本地Php Url處理。
Curl完成返回結(jié)果到客戶端。
存在問(wèn)題:
在第3步時(shí)有可能觸發(fā)到Php的推送流程,此時(shí)會(huì)推送失敗且卡在php fread推送結(jié)果。一直無(wú)法收到Workerman向php返回發(fā)送結(jié)果導(dǎo)致超時(shí)。求教大佬能給個(gè)思路嗎。
部分代碼:
[attach]745[/attach]
[attach]746[/attach]
innerWorker是什么協(xié)議?push函數(shù)用的是text協(xié)議,那么innerWorker也必須是text協(xié)議才能通訊。
還有就是看到innerWorker的onMessage里有打印,那么調(diào)試模式在終端會(huì)輸出打印,是否有看到打印?
如果沒(méi)有打印說(shuō)明沒(méi)有收到push函數(shù)內(nèi)stream_socket_client的的數(shù)據(jù),可能是stream_socket_client連錯(cuò)ip或者端口。
innerWorker也是text協(xié)議,監(jiān)聽(tīng)接口跟push連接中的時(shí)一致的。
調(diào)試模式下也沒(méi)有打印出東西。
stream_socket_client應(yīng)該是沒(méi)問(wèn)題的,因?yàn)槲野裦read注釋掉后就會(huì)變成正常,也能打印出push的消息了。
感謝大佬回復(fù)。