【发布时间】:2014-06-05 15:43:10
【问题描述】:
假设有一个 websocket 创建如下:
var ws = new WebSocket(url);
此外,假设通过此 Web 套接字进行的通信也可以正常工作。
已发现使用以下方法关闭此 WebSocket 会将其 readyState 设置为 CLOSING (2),但它永远不会达到 readyState CLOSED (3)。
ws.close();
问题: - 当这发生在 onmessage 事件中时,由于 WebSocket 连接还没有关闭,所以会继续命中。如何确保其关闭状态,以使 onmessage 停止命中?
WebSocket readState 读取:https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
【问题讨论】:
-
你遇到过这种行为吗?我无法确认“onmessage 事件持续触发,因为 WebSocket 连接尚未关闭”
-
是的。我遇到了这个问题。 WebSocket 连接处于“正在关闭”状态。我不确定它是如何从“Closing”变成“Closed”的。
-
所有浏览器都会出现这种情况吗?你到底需要这个做什么?快速修复:将
if (this.readyState!=1) return;添加到您的 onmessage 处理程序。
标签: javascript websocket