2012-10-06 49 views
2

我在玩WebSockets,在後臺運行Tomcat。如果我想要與客戶端共享多個數據流,最好是每個流有一個WebSocket還是通過一個共享的WebSocket多路複用它們?WebSockets - 一個還是很多?

這當然似乎更容易讓每個流一個的WebSocket。我不需要客戶端和服務器上的高級邏輯來將所有數據彙集到一個管道中,並且我不需要任何數據格式的開銷來指示每個幀的源/目標。

但是否有任何缺點,以一個客戶端頁面上使用多種的WebSockets(5-10)?

回答

2

如果您希望允許大量的多個併發用戶,則應儘量減少每個用戶的連接數,因爲TCP/IP服務器可以同時打開的連接數不是無限的。同時連接的數量在webservers配置中,操作系統和IP協議本身的架構(僅有2^16個端口)最後但並非最不重要。

+0

好一點。此外,Chrome等瀏覽器也會限制併發連接的數量! –

+0

雖然我的具體使用情況只有在預計最大少數用戶,擴展性問題是一個很好的點,並明確原因共享的WebSocket而不是有多個專用的WebSockets。 – Brad

+0

WebSocket連接使用80端口[WebSocket Wiki](https://en.wikipedia.org/wiki/WebSocket)「通過TCP端口號80完成,這對於那些阻止非web使用防火牆的Internet連接。「 數量有限的端口不能成爲問題。 – jfuentes

2

我聽說的傳聞(但從來沒有實際測試過),一些瀏覽器可以從相同的標籤/頁油門快速創建WebSocket連接的。如果這是真的,那就是勸阻惡意的Javascript嘗試使用WebSocket進行端口掃描。但除此之外,不應該有任何問題。

然而,由於的WebSockets是基於消息(而不是原始數據流),它不會是那麼困難多路複用器在一個連接/解複用的流量。您可以在每條消息的開頭添加一個字符來指示哪個流(或者如果您正在發送/接收JSON映射,那麼只需在每條消息中添加另一個字段)。

相關問題