繁体   English   中英

socket.io/node.js检测服务器是否关闭

[英]socket.io/node.js detecting if server is down

我可以在客户端执行某些操作来检测到socket.io websocket不可用吗? 类似于以下内容:

  • 服务器照常启动
  • 客户连接
  • 消息在服务器和客户端之间来回发送
  • 服务器关闭 (不再可用)
  • 警告连接的客户端服务器不可用

我试图在客户端添加'error'和'connect_failed'选项,但是没有运气,这些根本没有触发。 任何人有什么想法可以实现这一目标?

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');
});

在开发过程中遇到此错误,并注意到每次重新设置服务器时,套接字重新连接时,事件调用都会增加一倍。 原来对我有用的解决方案,这不是在欺骗连接,这是

var socket = io.connect();

socket.on('connect',function(){

console.log('用户已连接!');

});

socket.on('message',function(message){

console.log(消息);

});

(在KasperTidemann的https://github.com/socketio/socketio/socket.io/issues/430找到)

原来,这是因为我将“消息”侦听器放在了“连接”功能中。 将其放在听众之外,可以解决此问题。

无论您身在何处,都为Kasper Tidemann喝彩。

继续!!

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
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM