use*_*172 11 c# sockets stomp websocket node.js
我最近加入了一个新项目,我的任务是使用Web套接字实现流数据.这个想法是当前通过HTTP请求(以RESTful方式)公开的一堆信息,他们希望通过Web套接字公开这些信息.
我在过去48小时内对网络套接字和STOMP进行了大量研究,并希望对以下几点进行一些澄清:
因此,对于客户端和服务器通过Web套接字而不是通过HTTP请求/响应进行连接,他们首先需要同意在它们之间建立Web套接字连接.这是通过HTTP GET完成的,传递了一个唯一的标头,表示他们要使用Web套接字连接吗?
从理论上讲,有一大堆不同的数据通过某些API暴露给浏览器.想象一下,有很多不同的HTTP请求可以做成GET'S,POST',DELETE等等.因此,要通过Web套接字传输所有这些信息的某些部分,是否只需更改每个资源的当前GET请求以检查是否存在特殊的websocket标头然后执行某些操作?或者是否还有其他事情要通过Web套接字公开某些数据.如果您从HTTP请求初始化套接字,我可能会误解HTTP和套接字的关系.
我认为这些是我的两个主要问题,我相信这些问题的答案将指引我朝着正确的方向继续学习更多有关该主题的内容.我试图找到任何好的示例代码示例,但我正在努力理解这一点,以便在一周内实现.
因此,对于客户端和服务器通过Web套接字而不是通过HTTP请求/响应进行连接,他们首先需要同意在它们之间建立Web套接字连接.这是通过HTTP GET完成的,传递了一个唯一的标头,表示他们要使用Web套接字连接吗?
是的,或多或少.标题是:
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Key: <random string, base64 encoded>
Sec-WebSocket-Version: <version>
Run Code Online (Sandbox Code Playgroud)
version这些天通常是13,但我相信8仍然在使用.
如果服务器同意websocket,它将返回带有以下标头的HTTP代码101:
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: <base64 encoded hash based on Sec-WebSocket-Key>
Run Code Online (Sandbox Code Playgroud)
从理论上讲,有一大堆不同的数据通过某些API暴露给浏览器.想象一下,有很多不同的HTTP请求可以做成GET'S,POST',DELETE等等.因此,要通过Web套接字传输所有这些信息的某些部分,是否只需更改每个资源的当前GET请求以检查是否存在特殊的websocket标头然后执行某些操作?或者是否还有其他事情要通过Web套接字公开某些数据.如果您从HTTP请求初始化套接字,我可能会误解HTTP和套接字的关系.
听起来你理解这一点,但我会指出你只能用GET启动一个WebSocket.
根据您的描述,目前尚不清楚WebSockets实际上是您想要的.WebSockets用于服务器和客户端之间的双向通信.如果您只是希望能够从服务器流式传输到客户端,那么使用Server-Sent Events可以更轻松地完成任务.