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})
помог мне в подобной ситуации.