处理连接错误事件

时间:2014-08-12 14:04:39

标签: javascript sockets socket.io

当socket.io客户端无法连接到提供的服务器时,如何捕获?

这似乎不起作用:

var socket = io('http://example.com:3000');

socket.on('connect_fail', function() {
    console.log("fail"); // doesn't get here
});

如果我的服务器处于离线状态,则该事件不会触发,并且在控制台中会重复:XMLHttpRequest cannot load http://example.com:3000/socket.io/?EIO=2&transport=polling&t=1407852011369-40. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://dashboard.inkstand.org' is therefore not allowed access.

当服务器在线时,一切都按预期工作。

我无法找到有关此内容或任何客户端连接事件的任何好文档。

2 个答案:

答案 0 :(得分:1)

而不是:

socket.on('connect_fail', function() {
    console.log("fail"); // doesn't get here
});

尝试:

socket.on('error', function(err){
    console.log("fail");
    // Do stuff
});

当连接失败(http://socket.io/docs/client-api/

时触发

答案 1 :(得分:0)

经过更多研究,我发现在v1.0中处理的方式不同。

var manager = io.Manager('http://example.com:3000', {});
var socket  = manager.socket('/');

manager.on('connect_error', function() {
    console.log("fail"); // does get here now
});