【问题标题】:Web socket exception could not be caught无法捕获 Web 套接字异常
【发布时间】:2014-09-07 07:50:11
【问题描述】:
当我故意关闭客户端 JavaScript 代码时:
try
{
self.socket.send('ping');
}
catch(ex)
{
console.log('exception');
}
在 Chrome 控制台中写入:
WebSocket is already in CLOSING or CLOSED state.
try-catch 无法捕获此异常。如何确定无法通过 Web 套接字发送数据? onclose 事件没有被触发。
【问题讨论】:
标签:
javascript
websocket
ping
disconnect
reconnect
【解决方案1】:
我接受了无法捕捉到错误这一事实并实施了乒乓解决方案。
JavaScript 每 n 秒发送一个“ping”命令,服务器应以“pong”响应。如果发送了超过 5 个“ping”而没有响应,则会启动重新连接。
【解决方案2】:
您可以查看readyState。
try
{
if (self.socket && self.socket.readyState === 1) {
self.socket.send('ping');
}
else {
throw(new Error("WebSocket is not in OPEN state."));
}
}
catch(ex)
{
console.log('exception', ex);
}