Проверяет понимание реализации потоковой передачи данных от сервера к клиенту через Server-Sent Events для ИИ-ассистентов.
SSE — это технология, позволяющая серверу отправлять данные клиенту через одно HTTP-соединение, которое остается открытым. В отличие от WebSocket, SSE работает только в одну сторону (сервер → клиент), что идеально подходит для потоковой передачи текстовых ответов от ИИ-ассистента. Клиент подключается через стандартный EventSource API, который автоматически обрабатывает переподключение и обработку ошибок.
Сервер должен установить заголовки Content-Type: text/event-stream и Cache-Control: no-cache, а затем отправлять данные в формате, где каждое событие разделяется пустой строкой. Каждое сообщение может содержать поле data с текстом фрагмента ответа. Например, на Node.js с Express:
app.get('/stream', (req, res) => {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.flushHeaders();
const chunks = ['Привет', ', ', 'мир', '!'];
let i = 0;
const interval = setInterval(() => {
if (i < chunks.length) {
res.write(`data: ${chunks[i]}\n\n`);
i++;
} else {
clearInterval(interval);
res.end();
}
}, 500);
});На клиенте создается объект EventSource, который слушает события и обрабатывает их. Каждое полученное сообщение добавляется к уже отображенному тексту:
const eventSource = new EventSource('/stream');
eventSource.onmessage = (event) => {
const output = document.getElementById('output');
output.textContent += event.data;
};
eventSource.onerror = () => {
console.log('Ошибка соединения, попытка переподключения...');
};В реальном ИИ-ассистенте сервер получает запрос от клиента, отправляет его в модель (например, GPT), и по мере генерации ответа отправляет каждый токен или фразу через SSE. Это создает эффект «печатающего» ответа, улучшая пользовательский опыт. Важно правильно обрабатывать завершение потока и ошибки, чтобы клиент мог корректно завершить соединение.
SSE — простой и эффективный способ реализации потоковой передачи данных для ИИ-ассистентов, когда требуется односторонняя связь от сервера к клиенту. Он легко интегрируется с существующими HTTP-инфраструктурами и автоматически поддерживает переподключение, что делает его предпочтительным выбором для чат-ботов и систем реального времени.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
Node.js
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию