簡體   English   中英

使用WebSockets ......有效嗎?

[英]Using WebSockets… Efficiently?

我已經閱讀了很多我可以在WebSockets上找到的指南和教程,但其中沒有一本已經介紹了如何有效地使用它們。

有沒有人有任何關於如何做到這一點的指南? 我擔心單個連接可能占用的帶寬量,特別是當應用程序打開了連接的趨勢時。

WebSocket的效率取決於處理它們的Web服務器的實現和體系結構。 WebSocket是一種非常有效的協議,只有2字節(!)開銷,與每個Ajax請求中發送的所有不同HTTP頭字段HTTP cookie相比

通常,websockets的高效web服務器應該是事件驅動的(參見下面的示例)。 相反,實現Web服務器的傳統方法是每個請求生成一個新線程。 但是線程分配了很多內存,例如每個線程256MB。 因此,如果服務器上有1GB內存,則無法同時處理很多請求。 但是如果你的服務器是事件驅動的,你的內存使用率幾乎是不變的,因為沒有創建新的線程。 另請參見技術上,為什么Erlang中的進程比OS線程更有效?

您可以在WebSockets中發送任何數據。 如果客戶端是Web瀏覽器或類型化數組 ,則JSON是高效的。 如果您的客戶端是自定義應用程序,則可以使用Protocol Buffers 另請參閱Google Wave客戶端 - 服務器協議白皮書

您可以使用Twisted (Python)或Netty (Java)實現高效的websocket服務器。 Play Framework是一個高效的Web框架,用於在Netty上實現的Java和Scala。 另一種有效的替代方案是Yaws web服務器(Erlang)或Node.js + Socket.io(JavaScript)。

作為應用程序開發人員,發送的數據越少,效率越高(流量越少),服務器負載越少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM