javascript - 如果无法连接到服务器,则 Socket.io 客户端触发事件

标签 javascript node.js socket.io

我正在 Amazon EC2 上运行一个简单的 node.js 服务器,该服务器正在为我运行 socket.io。我正在开发一个在两个客户端之间发送数据的 Chrome 扩展。但是,如果我使服务器脱机,客户端不会尝试自动重新连接。我想实现这个功能。当我执行 socket = io.connect("http://xxx.xxx.xxx.xxx:xxx") 时,如果找不到指定 IP 地址和端口的服务器,该怎么办我让它触发一个事件,使其进入递归循环,直到可以为止?这样的事情存在吗?

function connect() {
    socket = io.connect("http://123.456.789.1011:1337");
    socket.on('server_not_found', function() {
        connect();
    });
}

最佳答案

从socket.io wiki 来看,您可以监听一个connect_failed 事件( https://github.com/LearnBoost/socket.io/wiki/Exposed-events )。该事件没有为我触发(请参阅 https://github.com/LearnBoost/socket.io-client/issues/375 ),但如果连接失败,错误事件将触发,您可以检查套接字上的连接状态。您可以尝试其中一种,看看哪种效果更好。

示例可能如下所示:

function connect() {
    var socket = io.connect("http://123.456.789.1011:1337"),
        timer;

    socket.on('error', function() {
        // wait 5 seconds then try again
        if (!socket.socket.connected) {
            timer = window.setInterval(function() { connect() }, 5000);
        }
    });

    socket.on('connect', function() {
        // we've connected so clear the timer
        window.clearInterval(timer);
    });
}

关于javascript - 如果无法连接到服务器,则 Socket.io 客户端触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611623/

相关文章:

node.js - "Fatal error: Unable to find local grunt."运行 "grunt"命令时

node.js - npm 在 'npm install' 之后不起作用

javascript - 上传到s3后无法查看PDF。上传图像工作正常(NodeJS)

socket.io - 如果客户端页面加载并且服务器关闭,则重试 socket.io 连接

java - 如何使用 Selenium WebDriver 中的 JavasSript 在文本字段/框中输入值

javascript - 中止 xmlhttp 请求

python - 使用 django-websocket-redis 的异步 Django

node.js - socket.io 和 session ?

javascript - 页面首次加载时显示的侧边栏

javascript - 在 javascript 中声明命名空间时是否应该使用原型(prototype)