我试图使用Websockets强化项目中的错误处理代码。目前,我们的代码将捕获"错误"事件以及"关闭"事件并使用各种启发式方法(例如,是否收到了开放事件?已经收到了特定于我们项目的各种数据包?)来决定发生了什么样的关闭/错误,然后立即取消注册事件处理程序并销毁对Websocket的所有引用。
我一直在考虑使用status code,但是虽然close事件会给你这个,但错误事件却没有 - 并且似乎总是首先发送错误事件。因此,如果我在发送第一个事件时清理Websocket,我将永远不会收到状态代码。
显而易见的解决方案是忽略错误事件并仅处理close事件,但这引起了一个问题:错误事件是否可以在没有紧接事件被触发后立即触发?(如果是的话,修改后的代码会错过它。)我能看到的规范中唯一相关的部分是this part,它指出当连接关闭时,第2步触发错误事件,第3步触发关闭事件,但我看不到任何说明由于其他原因无法触发错误事件的任何事情。
如果答案可以指出我的规范的一部分证明了这一点,我们将非常感激。
答案 0 :(得分:0)
我相信您正在正确阅读规范 - 没有其他提及error
事件的提及,这意味着您将在关闭期间唯一一次看到error
事件触发websocket的内容(如果它有错误,而不是在“正常”关闭期间),它将始终跟随close
事件。
鉴于在close
事件期间您可以检查事件信息以确定它是否完全关闭,人们想知道error
事件的目的是什么 - 看起来你似乎只需要担心处理close
事件,并查看wasClean
和reason
属性,以确定它是否是由于错误引起的。