Socket.io - 客户端断开连接后手动重连

16

我使用 node.jssocket.io 创建实时 Web 应用程序。我将让用户完全控制套接字连接,例如手动断开和重新连接。

function socket_connect()
{
    console.log('func socket_connect');
    socket = io.connect('http://url/to/the/app');
}

function socket_reconnect()
{
    console.log('func socket_reconnect');
    socket_connect();
}

function socket_disconnect ()
{
    console.log('func socket_disconnect');
    if (socket) socket.disconnect();
}

在客户端启动时,socket_connect() 函数正常工作,但是在使用了 socket.disconnect() 后,就无法启动新的连接。


1
你说的“没有新连接开始”是什么意思?是指不会自动重新连接,还是当用户选择socket_connect()时新连接无法工作? - Martin
自动重新连接正常工作,这不是问题。请看我的回答...问题已解决。 - acc
3个回答

16

您可以通过遵循客户端配置重新连接。

 // for socket.io version 1.0
io.connect(SERVER_IP,{'forceNew':true });

1
socket.io 2怎么样? - Xin

15

现在它可以使用socket.socket.reconnect()了

function socket_connect()
{
    console.log('func socket_connect');
    socket = io.connect('http://url/to/the/app');
}

function socket_reconnect()
{
    console.log('func socket_reconnect');
    socket.socket.reconnect();
}

function socket_disconnect ()
{
    console.log('func socket_disconnect');
    if (socket) socket.disconnect();
}

相关内容:https://github.com/LearnBoost/socket.io-client/issues/251


15
如果你正在使用 Socket.io 1.0,请尝试使用 io 管理器来处理手动断开和重新连接。
// Connect to socket.io 
var socket = io.connect('url');

function manual_disconnect() {
   socket.io.disconnect();
}

function manual_reconnect() {
   socket.io.reconnect();
}

在套接字上,重新连接尝试(reconnecting_attempt)、重新连接(reconnecting)、已重新连接(reconnected)和已连接(connected)事件都应该在之后被触发。


3
令人不爽的是,在1.x版本中仍然可以使用socket.disconnect(),但无法使用socket.reconnect()。因此,kmftzg的版本可能是最好的。 - Jörn Berkefeld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接