Обновляя страницу в браузере, закрывает и освобождает ВСЕ ресурсы, связанные с исходной страницей, а затем загружает бесплатную sh копию страницы и снова запускает любой Javascript на странице.
Итак , если код инициализации вашей страницы включает в себя открытие webSocket на ваш сервер, то этот webSocket будет закрыт при перезагрузке страницы.
Это то, что произойдет при начальной загрузке страницы, а затем при обновлении sh:
- Пользователь запрашивает вашу страницу
- Браузер загружает HTML для этой страницы
- Браузер работает Javascript на этой странице
- То Javascript создает соединение webSocket с вашим сервером
- Пользователь нажимает refre sh
- Браузер закрывает все ресурсы, связанные с исходной страницей, в том числе закрывает соединение webSocket.
- Браузер перезагружает исходное HTML для страницы
- Браузер снова запускается Javascript на этой странице
- То, что Javascript создает новое соединение webSocket с вашим сервером
* 1 026 *
Как обработать обновление страницы на стороне клиента?
После refre sh браузер запустит Javascript на вашей странице, и Javascript должен просто открыть новый Соединение webSocket и должно установить sh новое соединение для чата.
К вашему сведению, этот код , на который вы ссылались, содержит как минимум одну ошибку. Например, код на стороне сервера, который удаляет клиента из индекса на стороне сервера, не работает должным образом. Он запоминает индекс, когда клиентское соединение было добавлено в массив, и предполагает, что индекс никогда не изменяется, но это просто неправильно. Поскольку клиенты добавляются / удаляются из массива и подключаются / отключаются, этот индекс может измениться. Вам придется исправлять / отлаживать этот код, если вы его используете.
Хотя его можно заставить работать с Array
, я, вероятно, сам использовал бы Set
, и тогда он будет также легче удалить предмет.