Что происходит с подключениями WebSocket, когда экран телефона блокируется? - PullRequest
0 голосов
/ 02 октября 2018

Если в браузере телефона есть открытое соединение, и пользователь блокирует экран, то в определенный момент у него больше не будет соединения WebSocket.

Какие события запускаются, когда это происходит?Вызывается ли обработчик WebSocket.onerror или WebSocket.onclose, и если да, то происходит ли это, когда экран блокируется / приложение приостанавливается или когда приложение снова запускается?

(И бонусный вопрос:это стандартизировано, или браузеры ведут себя иначе, и если да, то как?)

1 Ответ

0 голосов
/ 08 октября 2018

Я сам провел некоторое тестирование, и ответ, кажется, таков: нет событий .Несмотря на то, что соединение обрывается, события error или close не запускаются, даже когда браузер снова запускается.Таким образом, основным способом решения этой проблемы является периодическая проверка состояния подключения и повторное подключение в случае необходимости - с экспоненциальным отключением в случае, если подключение прерывается на стороне сервера.(Или чтобы библиотека сделала это за вас, хотя я не нашел должным образом поддерживаемой клиентской библиотеки WebSocket на основе браузера, которая бы это делала.)

Это подтверждается автором эта статья :

Мобильные устройства представляют новую категорию проблем с подключением;если мобильное устройство заблокировано, переходит в спящий режим или приложение перемещается в фоновый режим, активное соединение WebSocket может перестать отвечать на запросы и не закрыться должным образом.

...