繁体   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