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

socket.io為什么不能支持同端口多進程模式?

justkids

之前一個問題中說socket.io的服務(wù)端運行機制決定每個端口只能開啟一個進程。(http://wenda.workerman.net/?/question/882
能再進一步說明一下 為啥么,它的機制有什么不同的導(dǎo)致一個端口只能開啟一個進程?

6560 1 0
1個回答

walkor 打賞

主要是因為多個進程間需要實時同步客戶端數(shù)據(jù)非常困難。數(shù)據(jù)包括socket.io客戶端sid數(shù)據(jù)、要推送給客戶端的數(shù)據(jù)、業(yè)務(wù)給socket.io連接對象賦值的動態(tài)屬性變量等

拿推送數(shù)據(jù)同步問題舉例
1、在瀏覽器不支持websocket時,socket.io會使用http協(xié)議和服務(wù)器通訊(socket.io握手時也是http請求)。
2、http協(xié)議是請求響應(yīng)式的,客戶端沒有發(fā)起http請求時,服務(wù)端無法主動推送數(shù)據(jù)給瀏覽器。
3、如果一個端口多個進程監(jiān)聽,瀏覽器發(fā)起http請求可能會發(fā)送到不同的進程。
4、假如服務(wù)端要給某個客戶端推送數(shù)據(jù),此時客戶端還沒發(fā)出http請求,服務(wù)端不能直接發(fā)送給瀏覽器
5、這時請求只能在某個進程(假設(shè)是A進程)內(nèi)部緩沖,等待客戶端發(fā)器http請求
6、假設(shè)瀏覽器發(fā)起http請求到B進程,那么會導(dǎo)致A進程的要推送的數(shù)據(jù)無法推送給瀏覽器

  • lt 2017-01-30

    A進程與B進程能不能通過GlobalData之類的組件共享緩沖數(shù)據(jù)解決這個問題?如果可以,GW框架應(yīng)該能實現(xiàn)對socketIO協(xié)議的支持吧?那就完美了,分布式部署更方便。

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