У меня есть клиент socket.io, подключенный к серверу node.js. Если я убиваю node.js в командной строке, клиент немедленно зависает (т. Е. Связь прекращается), но есть задержка ~ 20 секунд перед запуском события «разъединение». Такое поведение задумано? Есть ли опция конфигурации для уменьшения задержки срабатывания события отключения?

Похоже, что это поведение изменилось в относительно недавнем (последние 6 месяцев) обновлении socket.io. До того, как функция повторного подключения была встроена в сам socket.io, я реализовал свою собственную логику повторного подключения, используя обработчик события «разъединение», и в то время событие «разъединение» запускалось почти мгновенно, когда связь с сервером прерывалась.

5
Scott Brown 25 Авг 2011 в 19:06

2 ответа

Лучший ответ

Да. тайм-аут закрытия.

7
Selvatico 26 Авг 2011 в 09:30

Я думаю, что это, скорее всего, шаблон дизайна. Клиент может предполагать, что сервер «временно» недоступен (сетевой трафик и т. Д.), И по существу будет продолжать попытки связаться с ним ... до тех пор, пока не истечет время ожидания клиента.

Я отправляю отключение (socket.disconnect ()) на сервер непосредственно от клиента, и у меня не возникает этой проблемы.

2
fullstacklife 28 Авг 2011 в 15:55