SSE — не так прост: делаем стриминг токенов возобновляемым и мульти-девайсным
Автор разбирается, почему обещания простоты SSE — это как Wi-Fi у бабушки: в теории всё гладко, на практике — сплошные сюрпризы.

Помните, как все твердили, что Server-Sent Events (SSE) — это просто и элегантно? И вот вы сидите с токен-стримом, который обрывается на полуслове, а пользователь переключился с ноутбука на телефон. Знакомая боль? Автор статьи честно признаётся: обещания лёгкости SSE — это как сборка IKEA без инструкции. Вроде бы детали простые, но почему-то остаются лишние.
Проблема: стриминг токенов в реальном мире
SSE отлично подходит для отправки данных от сервера клиенту, но когда речь заходит о возобновлении прерванного стрима или синхронизации между устройствами, начинается настоящий квест. Автор разбирает, как сделать SSE-соединение устойчивым к разрывам и как организовать единую очередь токенов для нескольких клиентов.
Ключевые решения:
- Использовать уникальный ID события для отслеживания последнего полученного токена.
- Хранить состояние стрима на сервере (например, в Redis) для возможности восстановления.
- Применять паттерн "один стрим — много подписчиков" через шину событий (EventBus).
Особенно забавляет момент, когда автор предлагает добавлять в URL параметр ?resume=true — да, именно так, как будто мы в 2005-м пишем AJAX-запросы. Но нет, это реально работает и спасает от потери данных при обрыве соединения.
Комментарий студии METABYTE: Если вы тоже столкнулись с тем, что SSE-стрим ведёт себя как капризный кот — то отключается, то теряет события, — приходите к нам. Мы приручим этих "котов" и настроим стриминг так, что пользователи даже не заметят переключения между девайсами.
СЛЕДУЮЩИЙ ШАГ
Понравилось как мыслим?
Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.