Понимание Server Sent Events

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

Такая задержка кажется медленной. Она вызывает раздражение.

Чтобы решить эту проблему, разработчики используют потоковую передачу ответов (streaming responses). Это создает ощущение быстроты работы.

Server Sent Events (SSE) делают это возможным.

Что такое SSE? SSE — это стандарт для потоковой передачи данных от сервера к клиенту по протоколу HTTP. Он позволяет серверу отправлять вам обновления в режиме реального времени.

Как это работает: Сервер отправляет небольшие текстовые блоки. Эти блоки используют такие поля, как data, event, id и retry. Каждый блок отделяется пустой строкой.

Пример: data: {"name": "Portal Gun", "price": 999.99}

Распространенные варианты использования SSE:

  • Потоковая передача в AI-чатах
  • Живые уведомления
  • Логи в реальном времени
  • Наблюдаемость системы (observability)

До появления SSE разработчики использовали два основных метода получения обновлений:

  1. Короткие опросы (Short polling) Клиент запрашивает данные у сервера. Если данные не готовы, сервер отправляет сообщение о необходимости подождать. Клиент ждет и запрашивает снова. Это повторяется до тех пор, пока работа не будет завершена.

  2. Длинные опросы (Long polling) Клиент запрашивает данные у сервера. Сервер удерживает запрос открытым до тех пор, пока данные не будут готовы или не произойдет тайм-аут. Клиент должен немедленно отправить запрос повторно сразу после получения ответа.

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

Сервер открывает канал связи с клиентом. Он держит этот канал открытым до завершения процесса.

Источник: https://dev.to/rishini_dharan_t/understanding-server-sent-events-3mkd