Передавайте ответ частями по мере генерации: для однонаправленного потока подходит SSE, для двустороннего обмена — WebSocket. Интерфейс постепенно дописывает текст.
Какой подход выбрать для потоковой выдачи ответов чата, чтобы пользователь не ждал полный ответ 20 секунд?
Передавайте ответ частями по мере генерации: для однонаправленного потока подходит SSE, для двустороннего обмена — WebSocket. Интерфейс постепенно дописывает текст.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Передавайте ответ частями по мере генерации: для однонаправленного потока подходит SSE, для двустороннего обмена — WebSocket. Интерфейс постепенно дописывает текст.
Backend начинает поток после валидации запроса, отправляет события delta, а в конце done либо error. Прокси не должен буферизовать весь ответ; нужны отмена при отключении клиента, таймауты, heartbeat и идентификатор запроса.
Для POST с телом можно читать streaming response через fetch; нативный EventSource использует GET и не позволяет произвольный Authorization-заголовок. Показанные пользователю фрагменты нужно безопасно рендерить. Streaming улучшает время до первого полезного текста, но само по себе не ускоряет вычисление полного ответа.