Вопрос:
У меня есть простое одностраничное приложение, использующее прилавок для связи между сервером и клиентом.
Проблема: каждый раз, когда я перезагружаю страницу, мое подключение к веб-узлу отключено, а новое инициализируется. Проблема заключается в том, что пользователь должен переходить на обновление каждой страницы.
Вопрос: Как я могу устранить необходимость переустройства при обновлении страницы?
EDITED: столкнулся с следующей проблемой: как решить, когда нужно удалить сеанс? У меня есть одноранговый объект на стороне сервера, который является не чем иным, как контейнером сеанса websocket. Одноранговое соединение удаляется по методу onClose, который, в свою очередь, вызывается на виртуальной стороне клиентской стороны. Здесь возникает проблема: когда пользователь нажимает F5 → клиентская сторона, веб-сайт сломан → сервер удаляет соответствующую веб-страницу → клиентскую сторону, попробуйте перезагрузить страницу и проверьте, нет ли какой-либо сессии, И НЕ НИЧЕГО НИЧЕГО. С другой стороны, я не могу полностью прекратить удаление сверстников (сеансов).
Вопрос: Как я могу сказать серверу, когда удалять своих сверстников?
Лучший ответ:
Чтобы исключить необходимость аутентификации соединения WebSocket при каждом новом установлении соединения, вы можете использовать файлы cookie.
Аутентифицируйте соединение WebSocket в первый раз, установите cookie на соединение WebSocket и перепроверьте файл cookie при новом подключении.
Для этого требуется сервер WebSocket, который позволяет читать и устанавливать файлы cookie в соединении WebSocket.
Если соединение WebSocket обслуживается из того же источника, что и HTML-страница, содержащая JavaScript, который открывает соединение с WebSocket, вы также можете использовать “обычную” форму для входа на основе в формате HTML и процедуру cookie:
- Пользователь открывает “login.html”, который содержит форму HTML для входа
- Пользователь вводит имя пользователя/пароль, который отправляет HTML-форму через HTTP/POST на какой-либо URL-адрес
- Сервер проверяет учетные данные и при успешном выполнении генерирует случайный файл cookie, сохраняет куки файл и устанавливает cookie на HTML-странице, возвращенной из HTTP/POST
- Эта последняя возвращенная страница затем открывает соединение WebSocket с сервером (который находится на одном и том же происхождении, и, следовательно, установлен установленный ранее cookie)
- Сервер WebSocket в открывшемся рукопожатии проверяет, есть ли файл cookie, и если файл cookie хранится в БД для зарегистрированных пользователей
- Если это так, соединение WebSocket выполняется успешно. Если нет, сервер WebSocket не устанавливает соединение, а перенаправляет пользователя на 1.