簡體   English   中英

Websocket連接設置

[英]Websocket connection setup

我想了解更多關於websocket及其內部實現的信息。 但仍然無法理解一些事情。 我嘗試使用谷歌搜索進行深入解釋,但大多數只是給出了高級概述。 以下是我的疑惑

1.據我所讀,默認情況下,Web套接字服務器(C#/ C ++實現)使用端口80.雖然我們可以使用任何端口,但我們最好使用端口80,因為我們不會遇到任何防火牆問題。 如果是這樣,我們如何在同一個端口(80)上運行web服務器和Web套接字服務器?

2.假設Web套接字服務器在端口81上運行,Web服務器在端口80上運行。

  1. 因此,當瀏覽器發出初始握手HTTP請求(Upgrade:websocket)時,此請求將發送到端口81.對嗎? 如果是這樣,該請求(見下文)與HTTP協議沒有任何關系。 但我們仍然使用HTTP協議頭。 為什么?

      GET /mychat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat Sec-WebSocket-Version: 13 Origin: http://example.com 
  2. 為什么他們使用當前在大多數瀏覽器中實現的相同websocket接口來發出與給定端口的直接TCP / IP連接,而沒有任何HTTP內容?

3.對於從客戶端/服務器發送/接收的數據,是否存在數據包大小限制或數據/緩沖區限制? 如果是這種情況,我們是否需要構建數據並自行處理?

4. websocket服務器是否總是需要是一個單獨的服務/流程? 將來網絡服務器(IIS,apache)將包括在其進程空間內托管Web套接字服務器的支持嗎?

  1. 通過使用HTTP兼容握手,您可以將WebSocket處理程序集成到Web服務器中,或者讓Web服務器將websocket連接轉發到專用WebSocket服務器。

  2. WebSocket握手使用HTTP兼容握手,允許在同一端口上輕松處理這兩種協議,並允許現有防火牆配置更輕松地支持WebSocket流量。 此外,防止在HTTP請求的上下文中充分理解的跨端腳本攻擊,因此WebSocket利用了這些知識。 即使在建立連接之后,WebSocket 也不是原始套接字連接。 它是基於消息的協議,因此需要框架。 此外,當從客戶端(瀏覽器)發送到服務器時,框架被屏蔽,以減輕對行為不當的代理/緩存/中介的理論漏洞的擔憂。

  3. 協議本身的消息大小沒有限制。 消息可以拆分為多個幀。 幀大小存在協議限制,但它是2 ^ 64字節。 根據客戶端/服務器實現,實際幀大小限制將更小。 如果您要發送多兆字節的單個郵件,則可以考慮更改應用程序以使用較小的郵件,以最大限度地提高跨瀏覽器和跨服務器的支持。

  4. WebSocket處理絕對可以集成到Web服務器中,這是工作組設想的非常多的場景。 例如,考慮pywebsocket ,它被設計為獨立運行或作為Apache中的mod_python模塊運行。 另一個例子是, ASP.NET 4.5和IIS 8將內置對WebSockets的支持

暫無
暫無

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

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