Socket.io - ручное повторное подключение после отсоединения на стороне клиента - программирование
Подтвердить что ты не робот

Socket.io - ручное повторное подключение после отсоединения на стороне клиента

Я использую node.js и socket.io для создания веб-приложения в режиме реального времени. Я дам пользователям полный контроль над сокетным соединением, например, ручное отсоединение и (повторное) соединение.

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() не запускается новое соединение.

4b9b3361

Ответ 1

Теперь он работает с 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

Ответ 2

Вы можете подключиться, выполнив следующую конфигурацию на стороне клиента.

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

Ответ 3

Если вы используете 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();
}

После повторного подключения, повторного подключения, повторного подключения и подключенных событий на сокете все должны быть выбраны.

Ответ 4

socket.io-client v2.2.0

import io from "socket.io-client"

var socket = io(url)  // initial connection

const reconnect = () => {
  if(!socket.connected) {
    socket = io(url)  // reconnects to a new socket
  }
}