在WebSocket的onerror之后总是调用onclose

Baz*_*Baz 18 javascript websocket

是否可以调用onerror回调,之后不会立即调用onclose?换句话说,是否有可能得到一个WebSocket与连接不一致的错误然后被关闭?

如果有可能,我想测试一下这个案子.我有一个使用node.js和express-ws的模拟后端.我可以在后端做什么来触发前端的onerror事件回调.

Jam*_*rpe 22

error事件仅会先于随后也烧烧制的close情况下,至少通过正确地实现了规范的实现,也就是你会得到errorclose一对,或者只是close本身.

关闭websocket过程包括3个步骤,第二个步骤可选择在error需要时触发事件:

  1. 如果要求用户代理使WebSocket连接失败,或者在标记为已满后关闭WebSocket连接,则触发以errorWebSocket对象命名的简单事件.[WSP]

在第三步之前,然后调用close:

  1. 创建一个使用该CloseEvent接口的受信任事件,事件类型为close...

并且因为这两个步骤在同一个排队任务中是一个接一个地进行,所以应该一个接一个地调用事件处理程序,而不会在它们之间发生其他事件或任务.

  • @Safareli事实上,如果开放连接失败,规范会提到这一点:_"如果建立WebSocket连接算法失败,它会触发WebSocket连接算法失败,然后调用关闭WebSocket连接算法,然后确定WebSocket连接已关闭,它将触发close事件,如下所述."_ - 即与我的答案中概述的步骤相同,所以它实际上不应该单独触发`error`. (2认同)