假设有一个websocket创建如下:
var ws = new WebSocket(url);
此外,假设通过此Web套接字进行的通信也可以正常工作。
已发现使用以下内容关闭此WebSocket,将其readyState设置为 CLOSING(2),但它永远不会到达readyState CLOSED(3)。
ws.close();
问题: - 当在消息事件中发生这种情况时,由于WebSocket连接尚未关闭,因此继续按下。如何才能确保其关闭状态,以便消息停止发作?
WebSocket readState读取:https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
答案 0 :(得分:1)
由于WebSocket连接尚未关闭,onmessage事件不断发生。
这绝不可能发生。来自the spec:
收到WebSocket消息后,[和]如果
readyState
属性的值不是OPEN
,则中止[进一步]步骤。 < / p>
如果套接字的就绪状态已为CLOSING
,则不会再发出任何message
个事件。
readyState设置为
CLOSING
,但它永远不会到达CLOSED
这对我来说意味着connection is not properly closed。特别是,这种情况似乎发生在关闭握手已经开始,但服务器没有响应关闭控制框架。