У нас есть реализация сервера в akka-http на scala конечной точки Server Sent Events. Каждый запрос поставляется с заголовком last-event-id, который является timeuuid события, которое было в последний раз синхронизировано с клиентом. Если по каким-либо причинам соединение потеряно, клиент повторно соединяется с последним идентификатором события. На стороне сервера мы проводим проверку, чтобы ограничить ID последнего события событиями в течение последних 24 часов и только затем отвечать на запрос. Но иногда нет событий более одного дня, поэтому сервер не отправляет события клиенту. В таких случаях последнее синхронизированное событие должно быть старше 24 часов. Теперь, если соединение является разорванным, и клиент устанавливает соединение с более старым последним идентификатором события, сервер отправляет ответ 412. Клиентская библиотека, которую мы используем Alpakka EventSource, считает это ошибкой и продолжает повторять запрос.
Мы хотим знать 2 вещи:
1. Как сервер должен обрабатывать неверный идентификатор последнего события, отправленный в заголовке?
Он может игнорировать это или отбросить ответ об ошибке. Каков наилучший способ сделать это. В стандартах w3 нет ничего такого, что говорило бы об этом.
2.Что должен делать клиент в таких случаях? должен ли я повторить попытку, как это делает библиотека alpakka, или она должна повторяться только при определенных ошибках, а не при каждой ошибке.