当我故意关闭Web套接字服务器时,客户端JavaScript代码:
try
{
self.socket.send('ping');
}
catch(ex)
{
console.log('exception');
}
在Chrome控制台中写道:
WebSocket is already in CLOSING or CLOSED state.
此异常无法通过try-catch捕获。如何检测无法通过Web套接字发送数据? onclose事件未被解雇。
答案 0 :(得分:1)
我同意了这个错误无法捕获并实施乒乓球解决方案的事实。
JavaScript每隔n秒发送一次'ping'命令,服务器应该以'pong'响应。如果在没有响应的情况下发送超过5个“ping”,则启动重新连接。
答案 1 :(得分:1)
您可以查看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);
}