Long polling i ewolucja w kierunku strumieniowania
Poznaj long polling jako technikę pośrednią między tradycyjnym HTTP a nowoczesnymi transportami danych na żywo, dowiedz się, kiedy nadal ma znaczenie i jak wypada na tle WebSockets oraz SSE.
Long polling i ewolucja w kierunku strumieniowania to bezpłatna lekcja Real-Time Streaming Systems (WebRTC + Live Data) na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Real-Time Streaming Systems (WebRTC + Live Data), a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Real-Time Streaming Systems (WebRTC + Live Data) zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
Why Long Polling Exists
Before WebSockets and SSE were widely supported, developers needed a way to push data to clients over plain HTTP. Long polling filled that gap.
With long polling, the client makes a request and the server holds it open until new data is available, instead of replying immediately.
Short Polling vs Long Polling
Short polling hammers the server on a fixed interval, wasting requests when nothing changed.
- Short polling: request, immediate empty reply, wait, repeat.
- Long polling: request, server waits, replies only when data arrives.
Long polling cuts the volume of empty responses dramatically.
The Long Polling Cycle
The lifecycle is a loop:
- Client sends a request.
- Server holds it open (often with a timeout).
- When an event occurs, the server responds.
- Client processes data and immediately reconnects.
A Simple Client Loop
A long polling client recursively re-issues the request after each response. This keeps a near-continuous channel open.
async function poll() {
try {
const res = await fetch('/api/updates');
const data = await res.json();
handle(data);
} catch (e) {
console.error(e);
}
poll();
}
poll();Server Side: Holding the Request
On the server, you avoid replying until an event fires or a timeout is reached. This often uses an event emitter or a pending-promise registry.
app.get('/api/updates', (req, res) => {
const onEvent = (data) => {
res.json(data);
emitter.off('update', onEvent);
};
emitter.on('update', onEvent);
setTimeout(() => {
emitter.off('update', onEvent);
res.status(204).end();
}, 30000);
});Timeouts Matter
Never hold a request forever. Proxies, load balancers, and mobile networks will silently drop idle connections.
Use a server-side timeout (for example 30s) that returns an empty 204, prompting the client to reconnect cleanly.
Handling Reconnection Gaps
Between a response and the next request there is a tiny window where events could be missed. Use a cursor or last-seen ID so the server can replay anything that happened during the gap.
GET /api/updates?since=10427Long Polling vs WebSockets
- WebSockets: one persistent, bidirectional connection. Lowest latency.
- Long polling: repeated HTTP requests. Higher overhead but works everywhere HTTP works.
WebSockets win for chat and games; long polling wins for hostile network environments and legacy proxies.
Long Polling vs SSE
SSE keeps one connection open and streams many events down it. Long polling reopens a connection per event.
SSE is generally more efficient for unidirectional push, but long polling has broader compatibility and simpler proxy behavior.
Where Long Polling Still Wins
- Corporate networks that block WebSocket upgrades.
- Old proxies that buffer streaming responses.
- Serverless platforms with short execution limits, used as a fallback.
Many libraries (Socket.IO included) fall back to long polling automatically.
Scaling Considerations
Each held request consumes a server slot. With thousands of clients you need non-blocking I/O (Node, Go, async Python) so held requests do not exhaust threads.
Sticky sessions or a shared pub/sub layer (Redis) let multiple servers coordinate events.
Quick Check
Test your understanding of long polling.
Recap
Long polling holds an HTTP request open until data is ready, then the client reconnects. It bridges classic HTTP and true streaming.
- More efficient than short polling.
- Less efficient than WebSockets/SSE, but more compatible.
- Use timeouts and a cursor to stay reliable.
Ucz się Real-Time Streaming Systems (WebRTC + Live Data) dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 12
- Lekcje
- 48
Często zadawane pytania
Czy lekcja „Long polling i ewolucja w kierunku strumieniowania” jest bezpłatna?
Tak — pełny tekst „Long polling i ewolucja w kierunku strumieniowania” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Real-Time Streaming Systems (WebRTC + Live Data), przejdź na CoddyKit PRO. Kurs Real-Time Streaming Systems (WebRTC + Live Data) zawiera 4 lekcji w sumie.
Co nauczysz się w „Long polling i ewolucja w kierunku strumieniowania”?
Poznaj long polling jako technikę pośrednią między tradycyjnym HTTP a nowoczesnymi transportami danych na żywo, dowiedz się, kiedy nadal ma znaczenie i jak wypada na tle WebSockets oraz SSE. Ćwiczysz Real-Time Streaming Systems (WebRTC + Live Data) z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Real-Time Streaming Systems (WebRTC + Live Data)?
Nie wymagamy żadnego doświadczenia. Real-Time Streaming Systems (WebRTC + Live Data) w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Long polling i ewolucja w kierunku strumieniowania”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Real-Time Streaming Systems (WebRTC + Live Data)?
Tak. Każda lekcja Real-Time Streaming Systems (WebRTC + Live Data) zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dane na żywo a tradycyjny HTTP
- WebSockets do komunikacji dwukierunkowej
- Server-Sent Events (SSE) do jednokierunkowego przesyłania danych
- Long polling i ewolucja w kierunku strumieniowania