Почему мое соединение WebSocket закрывается после обновления sh страницы? - PullRequest
0 голосов
/ 21 февраля 2020

Я написал простое приложение для чата, используя простой nodejs и модуль Websocket. Все работает нормально, но если на странице обновилось состояние соединения, меняется на closed и в описании написано, что Remote peer is going away. Я знаю, что это стандартный код RF C 6455, но почему мое соединение не обновляется со страницей, поэтому чат продолжает работать. Как обработать обновление страницы на стороне клиента?

1 Ответ

1 голос
/ 21 февраля 2020

Обновляя страницу в браузере, закрывает и освобождает ВСЕ ресурсы, связанные с исходной страницей, а затем загружает бесплатную sh копию страницы и снова запускает любой Javascript на странице.

Итак , если код инициализации вашей страницы включает в себя открытие webSocket на ваш сервер, то этот webSocket будет закрыт при перезагрузке страницы.

Это то, что произойдет при начальной загрузке страницы, а затем при обновлении sh:

  1. Пользователь запрашивает вашу страницу
  2. Браузер загружает HTML для этой страницы
  3. Браузер работает Javascript на этой странице
  4. То Javascript создает соединение webSocket с вашим сервером
  5. Пользователь нажимает refre sh
  6. Браузер закрывает все ресурсы, связанные с исходной страницей, в том числе закрывает соединение webSocket.
  7. Браузер перезагружает исходное HTML для страницы
  8. Браузер снова запускается Javascript на этой странице
  9. То, что Javascript создает новое соединение webSocket с вашим сервером
* 1 026 *

Как обработать обновление страницы на стороне клиента?

После refre sh браузер запустит Javascript на вашей странице, и Javascript должен просто открыть новый Соединение webSocket и должно установить sh новое соединение для чата.


К вашему сведению, этот код , на который вы ссылались, содержит как минимум одну ошибку. Например, код на стороне сервера, который удаляет клиента из индекса на стороне сервера, не работает должным образом. Он запоминает индекс, когда клиентское соединение было добавлено в массив, и предполагает, что индекс никогда не изменяется, но это просто неправильно. Поскольку клиенты добавляются / удаляются из массива и подключаются / отключаются, этот индекс может измениться. Вам придется исправлять / отлаживать этот код, если вы его используете.

Хотя его можно заставить работать с Array, я, вероятно, сам использовал бы Set, и тогда он будет также легче удалить предмет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...