如何确保WebSocket的readyState已转为CLOSED(3)?

时间:2014-06-05 15:43:10

标签: javascript websocket

假设有一个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

1 个答案:

答案 0 :(得分:1)

  由于WebSocket连接尚未关闭,

onmessage事件不断发生。

这绝不可能发生。来自the spec

  

收到WebSocket消息后,[和]如果readyState属性的值不是OPEN,则中止[进一步]步骤。 < / p>

如果套接字的就绪状态已为CLOSING,则不会再发出任何message个事件。

  

readyState设置为CLOSING,但它永远不会到达CLOSED

这对我来说意味着connection is not properly closed。特别是,这种情况似乎发生在关闭握手已经开始,但服务器没有响应关闭控制框架。