Я создаю приложение «билет на цифровую очередь», в котором люди могут разместить очередь и другие, выстроиться в очередь. Если вы выстроитесь в очередь, вы увидите количество обслуживаемых в данный момент номеров, количество людей в очереди, ETA и т. Д. c. Это веб-интерфейс, и я решил использовать SSE для изменения sh (например, когда изменяется номер, который в данный момент обслуживается) для всех в этой указанной c очереди.
Мне нужен способ сопоставить / идентифицировать каждого клиента, чтобы, если они отключатся на некоторое время, а затем снова подключатся, они все равно будут оставаться на своих местах. Мне известно, что в случае ошибки браузер или клиент SSE автоматически попытаются восстановить соединение. Обычно задерживается на несколько секунд в зависимости от браузера. Кроме того, поток данных продолжается с той точки, в которой он был отключен, поэтому никакие сообщения не теряются при использовании Last-Event-Id.
Но если, например, пользователь по ошибке выйдет из сафари, снова откроет его и вернется к тому же URL-адресу, будет установлено новое соединение, ie оно не «переподключится».
Я рассмотрел токены или куки для выполнения sh этого. Однако стандарт SSE не поддерживает отправку заголовков (или данных POST). Только ПОЛУЧИТЬ данные и куки. Я мог бы передать токен в качестве параметра запроса. Вот некоторая информация, которую я прочитал по этому вопросу:
https://community.apigee.com/questions/28794/best-practices-for-passing-an-access-token-without.html
https://tools.ietf.org/html/rfc6750#section -2,3
Люди обсуждают проблемы безопасности, связанные с этим, но я думал, что, поскольку люди выстраиваются в очередь анонимно, и тот факт, что токен будет использоваться только для идентификации повторного подключения клиентов, это не будет проблемой. Кроме того, я отвечаю за заднюю часть и переднюю часть.
Использование файлов cookie также может работать, но я почти ничего не знаю о том, как они работают. Я предполагаю, что мне нужен постоянный повар ie, чтобы идентифицировать клиента, который "переподключается"? Если нет, то я должен использовать вместо этого WebSockets или опрос? Причина, по которой я выбрал SSE, заключалась в том, что мне нужно только однонаправленное общение.
Я новичок в этом, поэтому любые советы приветствуются! Чтение всего, что я мог получить в течение нескольких дней, но пока не нашел хорошего решения. Возможно, есть какой-то другой способ сделать sh то, что я хочу?