Как правило, не рекомендуется извлекать исходные данные, а затем использовать отдельный поток обновлений.Это связано с тем, что существует окно, в которое данные могут поступать на сервер между начальным извлечением и текущим потоком обновлений.
Обычно это означает, что вы либо пропускаете сообщения, либо получаете дубликаты, которые публикуются в обоих.Вы можете устранить дубликаты, отслеживая какой-либо идентификатор или порядковый номер, но это означает дополнительное кодирование и вычисление.
SSE может использоваться как для первоначальной выборки, так и для текущих обновлений в одном потоке, избегая вышеупомянутой синхронизацииЗадачи.
Клиент создает EventSource
для инициирования потока SSE.Сервер отвечает данными, которые уже есть, и после этого публикует любые новые данные, которые поступают на сервер.
Если вы хотите, сервер может включать идентификатор события в каждое сообщение.Затем, если клиент будет отключен, клиент SSE автоматически восстановит соединение с last-event-id
, и поток данных возобновится с того места, где он остановился.На стороне клиента автоматическое переподключение и возобновление с last-event-id
происходит автоматически, как это предусмотрено стандартом.Разработчику не нужно ничего делать.
SSE - это что-то вроде запроса HTTP / REST / XHR, который остается открытым и продолжает потоковую передачу данных, поэтому вы получаете лучшее из обоих миров.API является легким, простым для понимания и основанным на стандартах.