長連線與長輪詢分別如何實現的?各有哪些優勢和劣勢?

時間 2021-05-11 20:28:09

1樓:青石向晚

Comet: Low Latency Data for the Browser

Comet:基於 HTTP 長連線的「伺服器推」技術

2樓:丁文森

模擬情景:去飯店裡面吃飯。

長連線:把服務員叫到身邊,然後說,菜來的時候把菜端過來就好了。

輪詢:每隔幾分鐘把服務員叫來一次,然後問他菜好了沒。直到有一次叫服務員把菜端來才不再頻繁的叫服務員過來。

- - -

1. 長連線在實時性很高的場景下的優勢:

頻寬:輪詢每次都回在 http 頭中攜帶 cookie 以及其他資訊,長連線實際只有一次請求。

額外的驗證:每次請求都會帶有相應的許可權驗證等等操作,輪詢會增加這塊的額外開銷。

2. 其他:

長連線的服務端開發程度高於輪詢,比較方便開發長連線的語言有 nodejs。

3樓:Sinnyn

長連線的技術主要是用Comet,採用的技術分瀏覽器來實現,ie上用iframe,別的瀏覽器用xhr來實現。長連線主要是由於對伺服器的資源會有乙個占用,所以相對開銷會比較大,好處是即時性非常好,管理起來也相對方便。

長輪詢的話一般就是間隔一定的時間向伺服器請求事件。技術上就是用ajax來實現了。長輪詢會造出非常多的請求,不斷的請求可能會造成的影響是資料順序無法得到保證。

管理難度較大,好處是對系統的資源占用相對較少。

4樓:宋陽

長輪循是客戶端發起的,AJAX作為實現方式。

樓主所說的長連線是否指的是HTTP keep alive?使用這種方式,客戶端與服務端會保持一定時間的鏈路。服務端指令碼可以使用這個鏈路主動flush內容到客戶端。

HTTP長連線有時效性,不是可靠連線。使用這種方式併發連線會受侷限。

從技術角度個人傾向使用前者(長輪循)實現。

如何實現單伺服器300萬個長連線的?

弱網環境要注意半連線佇列的問題,需要查 算清楚系統的半連線佇列最大是多少。一旦半連線佇列滿了,根據系統配置就會拒絕連線或者使用syn cookies了。 wingshu 理論上是可以的,這與伺服器cpu記憶體頻寬有關,但應用程式離不開業務邏輯處理,一旦複雜就難以處理幾百萬的量了。本人從事物聯網應用開...

長連線TCP傳輸層如何定義合理的幀結構?

Bruce Wayne len payload 足以作為你的應用層協議。payload裡面根據業務實際需求再分成實際的域,或者key val,或者字串。幾個主要問題和解決方法 1.大包。比如你的len是Short,而payload有可能大於這個長度。方法 應用層拆包,第乙個包len設為0xFFFF,...

如何解決長城寬頻主動斷開tcp長連線的問題?

鶴83 你用長寬線路和你的伺服器傳輸資料,不超過5M頻寬說明該阿里雲IP沒有接入長城寬頻線路,換多幾個阿里雲IP,再不行可以換區域試試。 只能打長寬客服轉機房網管做白名單解決。TCP IP協議下,出口路由的埠只有65536個,長寬乙個出口路由下內網使用者太多,為了不讓高峰時長鏈結佔滿了出口路由埠,埠...