簡體   English   中英

了解 HTTP GET 如何升級到 Web Sockets

[英]Understanding how HTTP GET upgrades to Web Sockets

我誤解了如何在客戶端和服務器之間設置 Web 套接字連接。

在我看來,一個HTTP GET請求需要一個響應,這就是請求的整個生命周期。 現在談論網絡套接字時,我讀到服務器以101 (Switching Protocols)響應,然后神奇地(?)打開與該客戶端的網絡套接字連接。 在客戶端,它們如何處理服務器現在可能發送給它們的(同樣是神奇的?)數據流?

在我看來,可以這樣執行常規請求:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://localhost/something");
request.Method = "GET";
request.GetResponse();
        

即使GetResponse()返回101 ,客戶端還需要做什么來接收數據? 在服務器端?

我正在尋找指向一些突出實際實現的文檔的指針。 我不喜歡使用特定語言的庫,因為我希望任何客戶端都能夠通過正常的HTTP GET請求啟動 Web 套接字連接。

RFC 6455 (WebSocket 協議)是供您閱讀的文檔。 可以在4. 開啟握手中找到關於開啟握手的描述。

它是用 Java(而不是 C#)編寫的,但在用 C# 實現您自己的 WebSocket 客戶端庫之前,您可以咨詢nv-websocket-client

您需要使用System.Net.WebSockets.ClientWebSocket來訪問 WebSocket 服務器。

在 HTTP 101 之后會發生什么,連接不再被認為是基於 ASCII 的,它被認為是一個二進制連接,WebSocket 幀協議開始起作用,這就是為什么你需要一個客戶端 websocket 組件,因為你不能直接寫在套接字上,您必須按照RFC 的說明在消息中構建信息。

編寫你自己的客戶端會很有教益,但效率不高。

暫無
暫無

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

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