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.