国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

服務(wù)端開啟http服務(wù)向客戶端轉(zhuǎn)發(fā)送SSE數(shù)據(jù),客戶端主動(dòng)斷開鏈接后,如何及時(shí)結(jié)束進(jìn)程停止發(fā)送數(shù)據(jù)

hongchenker

問題描述

目前的場(chǎng)景,服務(wù)端開啟一個(gè)http服務(wù),服務(wù)端向客戶端以SSE(Server-sent Events)方式發(fā)送數(shù)據(jù),當(dāng)客戶端主動(dòng)斷開連接,服務(wù)端的數(shù)據(jù)還在持續(xù)發(fā)送,這時(shí)候同一個(gè)客戶端再次連接會(huì)連接不上,觀察發(fā)現(xiàn)只有SSE發(fā)送完成之后才會(huì)觸發(fā)onClose、同一個(gè)客戶端才能再次建立連接。

我現(xiàn)在需要的時(shí)當(dāng)同一個(gè)客戶端主動(dòng)斷開連接后,服務(wù)端允許同一個(gè)客戶端馬上重新建立連接且不影響之前連接的數(shù)據(jù)處理,請(qǐng)問有什么好的方法呢?

2041 1 0
1個(gè)回答

walkor 打賞

發(fā)重現(xiàn)問題的代碼,包括客戶端和服務(wù)端,要精簡(jiǎn)的可運(yùn)行代碼

  • hongchenker 2023-10-07

    服務(wù)端http進(jìn)程采用的是文檔里自定義進(jìn)程的邏輯( http://m.wtbis.cn/doc/webman/process.html ),調(diào)用$connection->send()向客戶端發(fā)送數(shù)據(jù)。
    發(fā)現(xiàn)config/process.php里count=1時(shí),同一個(gè)客戶端主動(dòng)斷開幾秒然后再次連接時(shí),因上一個(gè)連接的sse響應(yīng)還未結(jié)束,所以一直處于連接中狀態(tài),等上一個(gè)連接的程序跑完了,舊連接上了;
    現(xiàn)在count>1時(shí),倒是不會(huì)出現(xiàn)這種情況,算是暫時(shí)解決了。

  • 小W 2023-10-07

    發(fā)送的數(shù)據(jù)量比較大?

  • walkor 2023-10-07

    應(yīng)該是你寫法有問題,把進(jìn)程卡住了。業(yè)務(wù)不要用死循環(huán),不要用sleep

  • hongchenker 2023-10-10

    目前數(shù)據(jù)量不大(產(chǎn)品還在測(cè)試階段),也沒有死循環(huán),沒用sleep。
    倒是有一個(gè)遞歸調(diào)用外部接口的邏輯,但也加了遞歸次數(shù)限制,不會(huì)陷入死循環(huán)。
    通過觀察發(fā)現(xiàn),客戶端斷開連接之后,sse的輸出(打字機(jī)效果)結(jié)束之后才會(huì)調(diào)用onClose

  • walkor 2023-10-10

    那就是進(jìn)程一直在運(yùn)行遞歸調(diào)用接口邏輯,workerman內(nèi)核無法得到運(yùn)行權(quán),沒辦法響應(yīng)新的連接事件

年代過于久遠(yuǎn),無法發(fā)表回答
??