我想让javascript客户端进程获取服务器返回的HTTP状态代码,当客户端发出websocket升级请求并且该请求不成功时。
我的服务器返回HTTP 400以指示websocket升级失败。
我正在使用谷歌浏览器,当我打开开发者控制台时,我可以看到以下消息:
WebSocket连接到' wss://'失败:WebSocket握手期间出错:意外响应代码:400
但是,onerror处理程序不包含此消息,它收到1006错误但未指示由于获取HTTP 400而发生关闭。
javascript开发人员如何处理握手错误?我想在收到握手错误时向客户提供信息性消息。
我在下面放了websocket错误,它似乎不包含任何我可以用来指示此错误是websocket握手错误的结果。
Websocket Error: {"path":{"length":0},"cancelBubble":false,"returnValue":true,"srcElement":{"binaryType":"blob","protocol":"","extensions":"","bufferedAmount":0,"readyState":3,"url":"wss://<my address>","URL":"wss://<my address>"},"defaultPrevented":false,"timeStamp":1417828938039,"cancelable":false,"bubbles":false,"eventPhase":2,"currentTarget":{"binaryType":"blob","protocol":"","extensions":"","bufferedAmount":0,"readyState":3,"url":"wss://<my address>","URL":"wss://<my address>"},"target":{"binaryType":"blob","protocol":"","extensions":"","bufferedAmount":0,"readyState":3,"url":"wss://<my address>","URL":"wss://<my address>"},"type":"error"}
答案 0 :(得分:4)
我担心Javascript无法知道协商的HTTP状态代码。
已定义closing codes,而1006仅表示连接突然关闭,但协议甚至允许在不提供原因的情况下关闭连接。这与readyState API一起是您诊断问题原因的唯一工具。