关闭代码 1006
是一个特殊代码,表示浏览器实现异常(本地)关闭了连接。
如果您的浏览器客户端报告关闭代码,那么您应该查看事件以获取详细信息。1006
websocket.onerror(evt)
但是,Chrome很少会向Javascript端报告任何关闭代码原因。这可能是由于 WebSocket 规范中的客户端安全规则,以防止滥用 WebSocket。(例如,使用它来扫描目标服务器上的开放端口,或为拒绝服务攻击生成大量连接)。1006
请注意,如果在 HTTP 升级到 Websocket 期间出现错误,Chrome 通常会报告关闭代码(这是 WebSocket 在技术上“连接”之前的步骤)。由于身份验证或授权不当,或协议使用不当(例如请求子协议,但服务器本身不支持相同的子协议),甚至尝试与不是WebSocket的服务器位置通信(例如尝试连接到1006
ws://images.google.com/
)
从根本上说,如果你看到一个关闭的代码,你有一个非常低级的错误与WebSocket本身(类似于“无法打开文件”或“套接字错误”),并不是真正为用户准备的,因为它指向你的代码和实现的低级问题。修复低级别问题,然后在连接后,可以包含更合理的错误代码。您可以在项目的范围或严重性方面实现这一点。示例:信息和警告级别是项目特定协议的一部分,不会导致连接终止。对于严重或致命的消息报告,还可以使用项目的协议来传达尽可能多的详细信息,然后使用WebSocket关闭流的有限功能关闭连接。1006
请注意,WebSocket 关闭代码的定义非常严格,并且关闭原因短语/消息的长度不能超过 123 个字符(这是有意的 WebSocket 限制)。
但是,如果您只是出于调试原因而想要此信息,那么关闭的详细信息及其根本原因通常会在Chrome的Javascript控制台中报告相当多的详细信息。