Socket.io与服务器脱机连接

时间:2013-08-15 07:30:52

标签: javascript node.js socket.io

如何检测服务器是否处于脱机状态,或者由于其他原因无法连接。我的代码看起来像这样。

this.socket = io.connect(connectionInfo, {
    reconnect:false
});

它不会抛出任何错误,因此try / catch子句不起作用。

3 个答案:

答案 0 :(得分:14)

使用

  • this.socket.on("connect")来捕捉连接事件
  • this.socket.on("disconnect")抓住断线事件
  • this.socket.on("connect_failed")以捕获失败的连接尝试

使用this.socket.io.on(“connect_error”,callback)来捕获服务器是否处于脱机状态。

您可以在https://github.com/LearnBoost/socket.io/wiki/Exposed-events

找到所有活动

答案 1 :(得分:4)

自1.0更新以来,连接事件不同。 阅读此页面以获取更多信息:http://socket.io/docs/migrating-from-0-9/

就我而言,我可以检测到连接错误,如下所示:

var manager = io.Manager('http://'+window.location.hostname+':3000', { /* options */ });
manager.socket('/namespace');
manager.on('connect_error', function() {
    console.log("Connection error!");
});

this.socket = io.connect('http://'+window.location.hostname+':3000');

答案 2 :(得分:2)

如果您的服务器处于脱机状态且客户端尝试连接,请使用:

socket.on('error', function (err) {
    console.log(err);
});

所以客户知道他无法到达服务器。