为了在javascript中创建websocket连接,我们可以使用websocket api,例如:
const socket = new WebSocket('ws://localhost:8080');
然后浏览器将通过 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 定义,请参阅标准。此外,由于WebSockets不适合HTTP的请求-响应方案,但本质上构建了一个永久连接,服务器和客户端都可以彼此独立地编写,因此无法使用XHR处理WebSockets,XHR期望对单个请求进行单个响应。