WebSocket 在结束会话时的一些行为。
如果 JS 代码主动调用 WebSocket.close()
,发送 1000 (Normal Closure) 的 Close 帧。
如果 JS 代码还未调用 WebSocket.close()
,但是浏览器 tab 被关闭了,浏览器会发送 1001 (Going Away) 的 Close 帧。
如果浏览器 crash 了,那么它发不了 Close 帧。服务端可能会以这两种方式感知到关闭:
- No Status Rcvd (1005):表示收到的控制帧中没有具体的 close code。一些代理在清理无效连接时可能会有此行为
- Abnormal Closure (1006):表示没有收到 Close 控制帧,但是 WS 其下的 TCP 连接断开了