Proč byly v HTML5 zavedena události server-sent?
sobes.tech AI
Odpověď od AI
Události odesílané ze serveru (SSE) byly zavedena v HTML5 pro přenos dat ze serveru na klienta v jednom směru, v reálném čase, přes HTTP spojení. To umožňuje přijímat aktualizace od serveru bez nutnosti, aby klient neustále posílal požadavky (polling). Hlavní výhody oproti jiným technologiím:
- Jednoduchost: Používají běžné HTTP spojení, což usnadňuje integraci s existujícími webovými technologiemi a infrastrukturou.
- Efektivita: Umožňují serveru posílat data, když jsou připravena, snižují zatížení sítě a serveru ve srovnání s častým pollingem.
- Automatické znovupřipojení: Prohlížeč se automaticky pokusí obnovit spojení při přerušení.
- Vestavěné zpracování: API
EventSourcev prohlížeči poskytuje jednoduché rozhraní pro práci s událostmi a daty.
Příklad použití na straně klienta:
// Vytvoření nového objektu EventSource, uvedením URL serveru pro SSE
const eventSource = new EventSource('/updates');
// Zpracování události 'message' - příjem dat ze serveru
eventSource.onmessage = function(event) {
// Výpis přijatých dat do konzole
console.log('Nová data ze serveru:', event.data);
};
// Zpracování chyb připojení
eventSource.onerror = function(error) {
console.error('Došlo k chybě:', error);
};
Na serveru musí odpověď mít MIME typ text/event-stream a být naformátována následovně:
data: Toto je první řádek dat\n
data: Toto je druhý řádek dat\n\n
Každá zpráva končí dvěma znaky nového řádku (\n\n). Každý řádek dat začíná s data: . Mohou být i další pole, například event: pro určení typu události nebo id: pro identifikátor zprávy.
Serverové události jsou dobrou volbou pro scénáře, kde server musí posílat klientovi proud aktualizací, například oznámení, zpravodajské kanály, akciové kurzy nebo výsledky dlouhotrvajících procesů. Jsou jednodušší na implementaci než WebSockets pro jednostrannou komunikaci.