Zdarzenia wysyłane przez serwer

Standard W3C umożliwiający serwerowi wysyłanie strumienia danych do klienta przez długotrwałe połączenie HTTP — powszechnie używany do streamingu odpowiedzi modeli AI (token po tokenie) i jako transport MCP (deprecjonowany od wersji 2025-03-26 na rzecz Streamable HTTP).

W Polsce nazywane też:

zdarzenia serwerastreaming HTTPSSE streamingjednokierunkowy stream

Standardowy HTTP jest synchroniczny: klient pyta, serwer odpowiada, połączenie się kończy. To jest idealne dla statycznych zasobów — pobierz stronę, pobierz obrazek, wyślij formularz. Ale co gdy serwer chce wysyłać dane do klienta przez dłuższy czas? Co gdy model AI generuje odpowiedź token po tokenie i chcesz żeby użytkownik widział tekst pojawiający się w czasie rzeczywistym, nie czekał na całą odpowiedź?

SSE rozwiązuje dokładnie ten problem.

Czym jest SSE

SSE (Server-Sent Events) to standard W3C umożliwiający serwerowi wysyłanie strumienia danych do klienta przez długotrwałe połączenie HTTP — klient otwiera połączenie i pozostaje w trybie nasłuchu, serwer wysyła kolejne zdarzenia w miarę jak są gotowe — powszechnie używany do streamingu odpowiedzi modeli AI i jako jeden z transportów MCP (deprecjonowany od wersji 2025-03-26 na rzecz Streamable HTTP).

Jak działa

Klient wysyła żądanie HTTP z nagłówkiem `Accept: text/event-stream`. Serwer odpowiada nagłówkiem `Content-Type: text/event-stream` i nie zamyka połączenia. Serwer wysyła dane w formacie: `data: {„text”: „Hello”}\n\n`. Klient odbiera każde zdarzenie natychmiast gdy serwer je wyśle. Połączenie pozostaje otwarte do momentu gdy serwer je zamknie lub klient się rozłączy.

SSE w modelach AI

Streaming odpowiedzi modeli AI przez SSE to dziś standard. Gdy piszesz do ChatGPT lub Claude i widzisz tekst pojawiający się słowo po słowie — to jest SSE. Model generuje token, API wysyła go przez SSE, interfejs wyświetla natychmiast. Bez SSE musiałbyś czekać na całą odpowiedź przed jej zobaczeniem.

Anthropic API, OpenAI API, Google Gemini API — wszystkie oferują streaming przez SSE. Format zdarzenia to zazwyczaj `data: {„delta”: {„text”: „…”}}` lub podobny JSON.

SSE jako transport MCP

Pierwsza wersja specyfikacji MCP (2024-11-05) używała SSE jako główny transport dla połączeń sieciowych. Zaletą była prostota implementacji po stronie klienta i natywne wsparcie w przeglądarkach. Wadą — jednokierunkowość (serwer → klient) wymagała drugiego kanału dla komunikacji w przeciwnym kierunku.

W marcu 2026 Streamable HTTP zastąpiło SSE jako preferowany transport w MCP 2025-03-26. SSE jest teraz deprecjonowane ale nadal obsługiwane przez wsteczną kompatybilność. Serwery MCP które obsługują tylko SSE mogą przestać działać z nowymi klientami.

SSE a WebSocket

WebSocket to dwukierunkowy protokół — serwer i klient mogą wysyłać dane jednocześnie. SSE jest jednokierunkowe — tylko serwer → klient. Dla większości przypadków streamingu odpowiedzi AI SSE wystarczy i jest prostsze w implementacji. WebSocket jest potrzebny gdy klient musi wysyłać dane do serwera w trakcie trwającego połączenia.