Websocket: сохранение сеанса пользователя после перезагрузки страницы

Вопрос: У меня есть простое одностраничное приложение, использующее прилавок для связи между сервером и клиентом. Проблема: каждый раз, когда я перезагружаю страницу, мое подключение к веб-узлу отключено, а новое инициализируется. Проблема заключается в том, что пользователь должен переходить на обновление каждой страницы. Вопрос: Как я могу устранить необходимость переустройства при обновлении страницы? EDITED: столкнулся с

Вопрос:

У меня есть простое одностраничное приложение, использующее прилавок для связи между сервером и клиентом.

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

Вопрос: Как я могу устранить необходимость переустройства при обновлении страницы?

EDITED: столкнулся с следующей проблемой: как решить, когда нужно удалить сеанс? У меня есть одноранговый объект на стороне сервера, который является не чем иным, как контейнером сеанса websocket. Одноранговое соединение удаляется по методу onClose, который, в свою очередь, вызывается на виртуальной стороне клиентской стороны. Здесь возникает проблема: когда пользователь нажимает F5 → клиентская сторона, веб-сайт сломан → сервер удаляет соответствующую веб-страницу → клиентскую сторону, попробуйте перезагрузить страницу и проверьте, нет ли какой-либо сессии, И НЕ НИЧЕГО НИЧЕГО. С другой стороны, я не могу полностью прекратить удаление сверстников (сеансов).

Вопрос: Как я могу сказать серверу, когда удалять своих сверстников?

Лучший ответ:

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

Аутентифицируйте соединение WebSocket в первый раз, установите cookie на соединение WebSocket и перепроверьте файл cookie при новом подключении.

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

Если соединение WebSocket обслуживается из того же источника, что и HTML-страница, содержащая JavaScript, который открывает соединение с WebSocket, вы также можете использовать “обычную” форму для входа на основе в формате HTML и процедуру cookie:

  1. Пользователь открывает “login.html”, который содержит форму HTML для входа
  2. Пользователь вводит имя пользователя/пароль, который отправляет HTML-форму через HTTP/POST на какой-либо URL-адрес
  3. Сервер проверяет учетные данные и при успешном выполнении генерирует случайный файл cookie, сохраняет куки файл и устанавливает cookie на HTML-странице, возвращенной из HTTP/POST
  4. Эта последняя возвращенная страница затем открывает соединение WebSocket с сервером (который находится на одном и том же происхождении, и, следовательно, установлен установленный ранее cookie)
  5. Сервер WebSocket в открывшемся рукопожатии проверяет, есть ли файл cookie, и если файл cookie хранится в БД для зарегистрированных пользователей
  6. Если это так, соединение WebSocket выполняется успешно. Если нет, сервер WebSocket не устанавливает соединение, а перенаправляет пользователя на 1.
Оцените статью
Добавить комментарий