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