Socket.io переподключение на стороне клиента не работает

Я использую Socket.io для связи между моим сервером Node.js и клиентским веб-сайтом. Все отлично работает! За исключением одного.

Я разрешаю пользователю отключиться от Socket.io и подключиться позже, или, по крайней мере, я пытаюсь. Учитывая, что мой сокет от вызова io() хранится в mySocket, отключение работает нормально, используя mySocket.io.disconnect(), Сервер ловит его, клиент знает, что он отключен, это здорово. Проблема в том, когда я пытаюсь подключиться позже...

Так что сначала я просто попытался установить mySocket=io() еще раз, но это не удалось. Я узнал, что есть метод переподключения, поэтому я попытался использовать его, и мои проблемы ухудшились. Так что теперь я использую mySocket.io.reconnect()и я получаю некоторые странные результаты, описанные ниже.

Итак, во-первых, сервер получает попытку переподключения. Ловит on('connection',...) Событие просто отлично. Тем не менее, КЛИЕНТ, кажется, думает, что он никогда не переподключается - например, ценность mySocket.connected остается в false и все emit() звонки не выполняются (и никогда не попадают на сервер).

Есть ли какой-то особый метод, который я должен использовать, кроме просто mySocket.io.reconnect()? Или какую-то переменную или аргумент, который я должен установить? Почему мой сервер перехватывает соединение, если клиент считает, что он не подключен? Что происходит и как мне это исправить?

1 ответ

Решение

В клиенте соде:

mySocket = io('/', {forceNew: true}) помог мне в подобной ситуации.

Другие вопросы по тегам