为了在 javascript 中创建 websocket 连接,我们可以使用 websocket api:
const socket = new WebSocket('ws://localhost:8080');
然后浏览器将通过带有这些 header 的 http get 请求发起握手:
Upgrade: websocket
Connection: Upgrade
和服务器响应:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
之后客户端和服务器将打开 websocket 连接。
所以我的问题是是否可以通过其他方法进行握手?是否可以通过像 xhr 或类似的 JavaScript 来处理握手?
最佳答案
WebSockets 握手仅使用 GET 定义,请参阅 the standard 。此外,由于 WebSocket 不适合 HTTP 的请求响应方案,但本质上是建立一个永久连接,服务器和客户端都可以彼此独立写入,因此无法使用 XHR 处理 WebSocket,因为 XHR 需要对单个请求进行单个响应请求。
关于javascript - Websocket 握手操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200785/