2016-05-24 2 views
2

Socket.IO таймаут (отключение) происходит, если в сокете нет активности, но как обнаружено, что нет активности? Я не нахожу информацию об этом. Как работает процесс обнаружения? Например: Если пользователь закрывает вкладку веб-сайта, происходит отключение? Есть ли какой-либо способ, по которому пользователь теряет соединение, и разъединение не будет выполнено? Возможно, информация о кеше сообщает, что я в Интернете, даже если я покину веб-сайт?Как отключается разъём socket.io?

ответ

1

Если вы открываете инструменты разработчика на панели сети, вы можете отфильтровать свои запросы до ws запросов (запросы веб-сокетов), там вы можете увидеть свои активные соединения сетевых сокетов. Если вы выберете одно соединение, вы увидите заголовки, рамки, файлы cookie и время. Если вы выбираете вариант фреймов, вы можете видеть, что отправляется и принимается, между вашим браузером и сервером веб-сокетов.

следующее изображение станет ясно для вас, это инструменты разработчика Chrome:

Chrome developer tools

Теперь там вы можете видеть, что есть некоторые номера, в основном ваш браузер и сервер делают пинг-понг. Вы можете узнать больше об этих цифрах в этом ответе SocketIO Chrome Inspector Frames

Этот пинг-понг - это то, что поддерживает розетку, поэтому мы знаем, что нет таймаутов. Что касается разъединения и подключения, я советую вам прочитать больше о WebSockets API, там вы увидите, что есть прослушиватели событий для onclose, onerror, onmessage и onopen.

Так, отвечая на этот вопрос:

Например: Если пользователь закрывает вкладку сайта, происходит разъединение? Там - это любой пользователь, потерявший соединение и разъединение, не будет выполнен?

Нет, событие onclose будет запущено, но даже если какая-либо космическая причина не будет запущена, вы в конечном итоге отключитесь из-за таймаута.

Что касается другого вопроса:

Возможна информация кэша сообщает, что Im онлайн, даже если я оставлю сайт?

Да, это не до розетки, это зависит от вас и вашей реализации. Вы можете вести список онлайн-пользователей и время от времени обновлять этот список, скажем, 10 минут. Вы можете хранить списки онлайн-пользователей и время, когда вы обновляете список своих онлайн-пользователей, некоторые из них уже отключены.

+0

Спасибо за ответ, помогли мои сомнения. – Darm0ka