web-dev-qa-db-ja.com

Socket.io-クライアント側の切断後の手動再接続

_node.js_および_socket.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()を使用すると、新しい接続は開始されません。

16
acc

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

16
acc

クライアント側の設定に従って再接続できます。

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

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イベントはすべて、後で発行される必要があります。

16
kmftzg