Zrozumienie Server Sent Events
Wyobraź sobie, że korzystasz z ChatGPT. Zadajesz pytanie. Zamiast widzieć słowa pojawiające się jedno po drugim, czekasz 5 sekund, aż cała odpowiedź pojawi się naraz.
To opóźnienie sprawia wrażenie powolnego. Jest frustrujące.
Aby temu zaradzić, programiści stosują odpowiedzi strumieniowe (streaming responses). Dzięki temu doświadczenie wydaje się szybsze.
Server Sent Events (SSE) czynią to możliwym.
Co to jest SSE? SSE to standard przesyłania strumieniowego danych z serwera do klienta za pośrednictwem HTTP. Pozwala on serwerowi przesyłać aktualizacje do użytkownika w czasie rzeczywistym.
Jak to działa: Serwer wysyła małe bloki tekstu. Bloki te wykorzystują pola takie jak data, event, id oraz retry. Każdy blok jest oddzielony pustą linią.
Przykład: data: {"name": "Portal Gun", "price": 999.99}
Typowe zastosowania SSE:
- Strumieniowanie czatu AI
- Powiadomienia na żywo
- Logi w czasie rzeczywistym
- Obserwowalność systemów (observability)
Przed wprowadzeniem SSE programiści używali dwóch głównych metod uzyskiwania aktualizacji:
Short polling Klient prosi serwer o dane. Jeśli dane nie są gotowe, serwer wysyła komunikat o oczekiwaniu. Klient czeka i pyta ponownie. Proces ten powtarza się, aż zadanie zostanie wykonane.
Long polling Klient prosi serwer o dane. Serwer utrzymuje żądanie otwarte, dopóki dane nie będą gotowe lub nie nastąpi przekroczenie czasu oczekiwania (timeout). Klient musi natychmiast po otrzymaniu odpowiedzi ponowić żądanie.
Strumienie zdarzeń obsługują procesy ciągłe. Procesy te przebiegają w określonej kolejności. Obejmuje to zarówno proste zadania, takie jak tworzenie pliku PDF, jak i złożone operacje, takie jak transakcje bankowe.
Serwer otwiera kanał komunikacyjny z klientem. Utrzymuje on ten kanał otwarty aż do zakończenia procesu.
Źródło: https://dev.to/rishini_dharan_t/understanding-server-sent-events-3mkd