【问题标题】:Websockets - is an "error" event always followed by a "close" event?Websockets - “错误”事件总是后跟“关闭”事件吗?
【发布时间】:2016-07-04 17:32:41
【问题描述】:

我正在尝试使用 Websockets 加强项目中的错误处理代码。目前,我们的代码将捕获一个“错误”事件和一个“关闭”事件,并使用各种启发式方法(例如,是否收到了打开事件?是否收到了特定于我们项目的各种数据包?)来决定什么样的发生关闭/错误,然后立即注销事件处理程序并销毁对 Websocket 的所有引用。

我一直在考虑改用status code,但是虽然关闭事件给了你这个,错误事件没有——而且错误事件似乎总是先发送。因此,如果我在发送这些事件中的第一个时清理 Websocket,我将永远不会收到状态代码。

显而易见的解决方案是忽略错误事件而只处理关闭事件,但这引发了一个问题:是否可以在没有立即触发关闭事件的情况下触发错误事件?(如果是这样,修改后的代码会错过它。)我能看到的规范中唯一相关的部分是this part,它指出当连接关闭时,步骤 2 会触发错误事件,步骤 3 会触发关闭事件,但我看不到任何说明由于其他原因无法触发错误事件的内容。

如果有答案可以指出规范的一部分来证明这一点,我们将不胜感激。

【问题讨论】:

    标签: javascript events websocket


    【解决方案1】:

    我相信您正确阅读了规范 - 没有其他提及引发 error 事件,这意味着您将看到 error 事件触发的唯一时间是在 websocket 关闭期间(如果它发生了错误,而不是在“正常”关闭期间),并且将始终跟随 close 事件。

    鉴于在close 事件期间,您可以检查事件信息以了解它是否完全关闭,有人想知道error 事件的目的是什么 - 看起来您只需要担心关于处理close 事件,并查看wasCleanreason 属性以确定它是否是由于错误引起的。

    【讨论】:

      猜你喜欢
      • 2018-08-28
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2013-04-22
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多