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