关于 websocket 的 onerror

您所在的位置:网站首页 websocketserver会有弹窗 关于 websocket 的 onerror

关于 websocket 的 onerror

2023-09-12 14:37| 来源: 网络整理| 查看: 265

先贴个 w3 规范的链接。

exception 和 error event 都会由 onerror 抛出。不过在处理 error event 时 onerror 回调本身并没有多大用处。

一个重要原因是有这么一个规定,在某些条件下不允许 onerror 的 event 携带说明原因的信息,如图:

即发生以上情况时,只能知道出错了,没法知道到底什么错。

虽然是有条件的限制,但是只要不能覆盖所有的情况,就不应该依赖 onerror。而且条件还这么多

不过值得注意的是,error event 只有一种情况下会发生,那就是在 onclose 之前。原文是:

就是第二条里的这个 simple event named error。

这时,error event 一定会紧接着 onclose,并且由于 onclose 的 event 允许设置自定义 code,可以在这里对 error 做比较详细的处理。

话又说回来了,如果只是做一些粗略的判断还是可以的,毕竟至少可以在 onerror 中区分发生的是 exception 还是 error event。

但是!规范这种东西...我们知道浏览器经常不会严格按照规范实现,对于 websocket,我也不知道是不是完全按照规范实现的。不过从目前测试来看,应该没啥问题...

出了问题别找我...

另外,一些想当然会触发 onerror 的情况实际上并不会发生。

比如连接后立即调用 send() 时,会在 onerror 抛一个 Still in CONNECTING state 的 exception。既然这样,那么断开后再调用 send() 感觉也是类似的情况,应该也会有 exception 吧?

并不会。

对于这个情况,只能提前做处理,阻止 send(),或 send() 之前判断一下 readyState。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3