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