Как правильно настроить SSE?

Для правильной настройки SSE (Server-Sent Events) в Node.js, вам потребуется следовать нескольким шагам.

1. Установка зависимостей:
Для начала убедитесь, что у вас установлен Node.js на вашем компьютере. Затем создайте новую папку для проекта и перейдите в нее через командную строку или терминал. Инициализируйте новый проект с помощью команды npm init, а затем установите Express и другие необходимые пакеты, выполнив команду npm install express.

2. Создание сервера:
Создайте новый файл, например, server.js, и подключите Express, добавив следующие строки в начало файла:

const express = require('express');
const app = express();
const port = 3000; // Или любой другой порт, который вы хотите использовать

3. Настройка маршрута SSE:
Создайте новый маршрут для SSE, добавив следующие строки перед созданием сервера:

app.get('/sse', (req, res) => {
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');
  res.setHeader('Connection', 'keep-alive');
  res.setHeader('Access-Control-Allow-Origin', '*');

  // Отправьте первое событие SSE
  res.write(`data: ${JSON.stringify({ message: 'Hello SSE' })}nn`);

  // Отправьте другие события SSE через определенный интервал времени (например, каждые 5 секунд)
  setInterval(() => {
    res.write(`data: ${JSON.stringify({ message: 'Another event' })}nn`);
  }, 5000);
});

4. Запуск сервера:
Добавьте следующую строку в конец файла server.js, чтобы запустить сервер:

app.listen(port, () => {
  console.log(`Server is listening at http://localhost:${port}`);
});

5. Запуск сервера SSE:
Выполните команду node server.js в командной строке или терминале, чтобы запустить сервер SSE.

Теперь вы можете обращаться к маршруту SSE (http://localhost:3000/sse) и получать обновления через протокол SSE. Каждые 5 секунд на клиент отправляется новое событие SSE с данными в формате JSON.

Это базовый пример настройки SSE в Node.js с использованием Express. Вы можете добавить другие функции и логику, в зависимости от ваших потребностей.