Node.js和Socket.IO-如何在断开连接后立即重新连接

我正在使用node.js和socket.io构建一个小型原型。一切运行正常,我面临的唯一问题是我的node.js连接将断开连接,并且我被迫刷新页面以重新建立连接并重新运行。

有一种方法可以在断开事件触发后立即重新建立连接?

据我所知,这是一个普遍的问题。因此,我正在寻找解决该问题的最佳实践方法:)

非常感谢,丹

回答:

当我使用socket.io时,断开连接没有发生(仅当我手动关闭服务器时)。但是您可以在例如失败10秒或发生断开事件后说几秒钟后重新连接。

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

// reconnect

});

我想出了以下实现:

var connected = false;

const RETRY_INTERVAL = 10000;

var timeout;

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

connected = true;

clearTimeout(timeout);

socket.send({'subscribe': 'schaftenaar'});

content.html("<b>Connected to server.</b>");

});

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

connected = false;

console.log('disconnected');

content.html("<b>Disconnected! Trying to automatically to reconnect in " +

RETRY_INTERVAL/1000 + " seconds.</b>");

retryConnectOnFailure(RETRY_INTERVAL);

});

var retryConnectOnFailure = function(retryInMilliseconds) {

setTimeout(function() {

if (!connected) {

$.get('/ping', function(data) {

connected = true;

window.location.href = unescape(window.location.pathname);

});

retryConnectOnFailure(retryInMilliseconds);

}

}, retryInMilliseconds);

}

// start connection

socket.connect();

retryConnectOnFailure(RETRY_INTERVAL);

// express route to ping server.

app.get('/ping', function(req, res) {

res.send('pong');

});

以上是 Node.js和Socket.IO-如何在断开连接后立即重新连接 的全部内容, 来源链接: utcz.com/qa/408765.html

回到顶部