gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:47:44 24 4
gpt4 key购买 nike

我正在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com