Sobes.tech
Back to questions
Junior — Middle
64

Можете объяснить, что такое Server-Sent Events и как они работают?

Answer from AI

sobes.tech AI

Server-Sent Events (SSE) — это технология, которая позволяет серверу отправлять обновления клиенту в режиме реального времени через однонаправленное соединение HTTP. Клиент устанавливает соединение с сервером, и сервер может по этому соединению посылать потоковые данные, например, обновления состояния или события.

Как это работает:

  • Клиент отправляет HTTP-запрос с заголовком Accept: text/event-stream.
  • Сервер отвечает с типом контента text/event-stream и начинает отправлять данные в формате событий.
  • Каждое событие состоит из нескольких строк, например, data: сообщение и пустой строки, которая обозначает конец события.
  • Соединение остается открытым, и сервер может отправлять новые события по мере их появления.

Пример простого SSE-сервера на Python с использованием Flask:

from flask import Flask, Response
import time

app = Flask(__name__)

def event_stream():
    count = 0
    while True:
        yield f"data: Сообщение {count}\n\n"
        count += 1
        time.sleep(1)

@app.route('/stream')
def stream():
    return Response(event_stream(), mimetype='text/event-stream')

if __name__ == '__main__':
    app.run(debug=True, threaded=True)

Клиент может подключиться к /stream и получать обновления в реальном времени.