【发布时间】:2017-02-26 07:40:38
【问题描述】:
是否可以在不会立即调用 onclose 的情况下调用 onerror 回调?换句话说,是否有可能出现WebSocket 错误,该错误与随后关闭的连接不一致?
如果可能的话,我想测试一下这个案例。我有一个使用 node.js 和 express-ws 的模拟后端。后端怎么做才能触发前端的onerror事件回调。
【问题讨论】:
标签: javascript websocket
是否可以在不会立即调用 onclose 的情况下调用 onerror 回调?换句话说,是否有可能出现WebSocket 错误,该错误与随后关闭的连接不一致?
如果可能的话,我想测试一下这个案例。我有一个使用 node.js 和 express-ws 的模拟后端。后端怎么做才能触发前端的onerror事件回调。
【问题讨论】:
标签: javascript websocket
error 事件只会在触发close 事件之前触发,至少通过正确实现规范的实现,即您将得到error 和close 作为一对,或者只是 close 本身。
process for closing a websocket consists of 3 steps,如果需要,第二个可以选择触发 error 事件:
- 如果要求用户代理使 WebSocket 连接失败,或者如果 WebSocket 连接在标记为已满后关闭,则在 WebSocket 对象上触发一个名为
error的简单事件。 [WSP]
在第三步之前调用close:
- 创建一个使用
CloseEvent接口的可信事件,事件类型为close...
而且由于这两个步骤在同一个队列任务中一个接一个,所以您的事件处理程序应该一个接一个地被调用,它们之间不会发生其他事件或任务。
【讨论】:
error 事件触发是在触发 close 之前。如果您确实看到了不同的东西,那么值得了解详细信息(浏览器版本等),因为它可能是一个错误。
onerror/onclose),但IE本身甚至拒绝尝试打开另一个。