有没有客户端可以检测到socket.io websocket不可用的方法?类似以下方式:
- 服务器如常启动
- 客户端连接
- 消息在服务器和客户端之间发送
- 服务器关闭(不再可用)
- 警告已连接的客户端服务器不可用
我尝试在客户端添加“错误”和“连接失败”的选项,但没有成功,它们根本没有触发。有任何想法如何实现这一点吗?
有没有客户端可以检测到socket.io websocket不可用的方法?类似以下方式:
我尝试在客户端添加“错误”和“连接失败”的选项,但没有成功,它们根本没有触发。有任何想法如何实现这一点吗?
断开连接(disconnect)
事件是您要监听的内容。
var socket = io.connect();
socket.on('connect', function () {
alert('Socket is connected.');
});
socket.on('disconnect', function () {
alert('Socket is disconnected.');
});
connect_error
。我在使用socket.io-1.3.5.js时可以这样做。我在https://stackoverflow.com/a/28893421/2262092中找到了这个方法。var socket = io.connect('http://<ip>:<port>', {
reconnection: false
});
socket.on('connect_error', function() {
console.log('Failed to connect to server');
});
connect_error
对我没有用(使用 Apache ProxyPass 并返回 503)。
如果您需要检测初始连接失败,可以这样做。
var socket;
try {
socket = io();
}
catch(e) {
window.location = "nodeServerDown.php";
}
当服务器宕机时,将用户重定向到自定义错误页面。
如果您需要在连接一次后处理断开连接。
您可以这样做:
socket.on('disconnect', function() {
//whatever your disconnect logic is
});
console.log(message);
});
( 在https://github.com/socketio/socket.io/issues/430中发现,作者是KasperTidemann )
结果是,问题是因为我把'message'监听器放在了'connect'函数里。将其放到监听器外部解决了这个问题。
向Kasper Tidemann干杯,无论你在哪里。
接着往下做吧!