关于javascript:Socket.io-客户端断开连接后手动重新连接

Socket.io - Manual reconnect after client-side disconnect

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
2
 // for socket.io version 1.0
io.connect(SERVER_IP,{'forceNew':true });


如果使用的是Socket.io 1.0,请尝试在套接字上使用io管理器来处理手动断开和重新连接。

1
2
3
4
5
6
7
8
9
10
// 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事件都应随后发出。


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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