Czym jest Long Polling?
Published: 2023-12-12 10:55:40

Czym jest długie odpytywanie?
-----------------------------

Długie odpytywanie jest używane w aplikacjach internetowych czasu rzeczywistego w celu osiągnięcia niemal natychmiastowej komunikacji między klientem a serwerem internetowym. Jest to szczególnie przydatne w aplikacjach do czatowania i przesyłania wiadomości, gdzie aktualizacje w czasie rzeczywistym mają kluczowe znaczenie.

W tradycyjnej komunikacji [HTTP](https://www.pubnub.com/guides/http/) klient wysyła nowe żądanie do serwera i czeka na odpowiedź. Jest to znane jako krótkie odpytywanie. Jednak w scenariuszach czasu rzeczywistego krótkie odpytywanie może nie być wydajne, ponieważ wymaga częstych żądań do serwera, co powoduje niepotrzebne obciążenie sieci i zwiększone opóźnienia.

Z drugiej strony, długie odpytywanie poprawia wydajność, utrzymując żądanie otwarte przez dłuższy czas, aż nowe dane będą dostępne. Serwer utrzymuje żądanie otwarte i czeka, aż będzie miał nowe informacje do odesłania do klienta. Gdy serwer ma nowe dane, odpowiada klientowi, który może następnie przetworzyć dane i zainicjować nowe żądanie długiego odpytywania.

Utrzymując długotrwałe połączenie między klientem a serwerem, długie odpytywanie zmniejsza liczbę żądań, minimalizuje opóźnienia i poprawia komunikację w czasie rzeczywistym. Sprawia to, że jest on idealny w przypadkach użycia, które wymagają skutecznej techniki tworzenia skalowalnych i responsywnych aplikacji do czatowania i przesyłania wiadomości, a także innych aplikacji wykorzystujących dane w czasie rzeczywistym, takich jak gry.

Jak działa long polling?
------------------------

Long polling to technika wykorzystywana w komunikacji w czasie rzeczywistym w celu osiągnięcia niemal natychmiastowego dostarczania wiadomości między klientami a serwerami. Jest to szczególnie przydatne w tworzeniu aplikacji do czatowania i przesyłania wiadomości, gdzie kluczowe znaczenie mają niskie opóźnienia i aktualizacje w czasie rzeczywistym.

Tradycyjnie przeglądarki internetowe używają podejścia opartego na pobieraniu danych z serwerów. Klient wysyła żądanie do serwera, który odpowiada żądanymi danymi. Takie podejście, znane jako krótkie odpytywanie, może powodować opóźnienia w komunikacji, ponieważ klient musi wielokrotnie wysyłać żądania sprawdzenia aktualizacji.

Z drugiej strony, długie odpytywanie jest podejściem opartym na push, które pozwala serwerowi wysyłać aktualizacje do klienta, gdy tylko są one dostępne. Oto jak to działa:

1.  Klient inicjuje żądanie do serwera, zazwyczaj poprzez żądanie HTTP.
    
2.  Zamiast natychmiastowej odpowiedzi, serwer utrzymuje żądanie otwarte, utrzymując aktywne połączenie.
    
3.  Jeśli żadne nowe dane nie są dostępne, serwer czeka, aż będzie miał coś do odesłania.
    
4.  Gdy serwer otrzyma nowe dane lub wystąpi predefiniowany limit czasu, odpowiada klientowi z najnowszymi informacjami.
    
5.  Po otrzymaniu odpowiedzi klient natychmiast wysyła kolejne żądanie do serwera w celu utrzymania połączenia.
    
6.  Ten cykl wysyłania żądań i odbierania odpowiedzi jest kontynuowany, zapewniając aktualizacje w czasie rzeczywistym.
    

Długie odpytywanie skutecznie symuluje połączenie w czasie rzeczywistym między klientem a serwerem, utrzymując cykl żądanie-odpowiedź otwarty przez dłuższy czas. Pozwala to serwerowi na przesyłanie aktualizacji do klienta, gdy tylko są one dostępne i eliminuje potrzebę wielokrotnego sprawdzania aktualizacji przez klienta.

Jakie technologie są używane do implementacji długiego odpytywania?
-------------------------------------------------------------------

Długie odpytywanie to technika umożliwiająca komunikację w czasie rzeczywistym między klientem a serwerem. Jest ona powszechnie stosowana w aplikacjach do czatowania i przesyłania wiadomości, gdzie kluczowe znaczenie mają natychmiastowe aktualizacje. Do implementacji long pollingu można wykorzystać kilka technologii, z których każda ma swoje zalety i wady. Przyjrzyjmy się niektórym z popularnych technologii wykorzystywanych w implementacji long polling.

Długie odpytywanie[**HTTP**](https://www.pubnub.com/blog/http-long-polling/)**:**

Jest to najbardziej podstawowe i powszechnie stosowane podejście do implementacji długiego odpytywania. Wykorzystuje protokół HTTP do ustanowienia i utrzymania długotrwałego połączenia między klientem a serwerem. Klient wysyła żądanie do serwera, a serwer utrzymuje je otwarte do momentu, aż dostępne będą nowe dane lub osiągnięty zostanie określony limit czasu. Gdy nowe dane są dostępne, serwer odpowiada zaktualizowanymi informacjami, a klient natychmiast wysyła kolejne żądanie, aby kontynuować cykl. Podejście to jest łatwe do wdrożenia i nie wymaga specjalnych technologii po stronie serwera.

[**WebSocket:**](https://www.pubnub.com/guides/what-are-websockets-and-when-should-you-use-them/)

WebSocket to w pełni dupleksowy protokół komunikacyjny, który umożliwia komunikację w czasie rzeczywistym między klientem a serwerem za pośrednictwem pojedynczego, długotrwałego połączenia. Stanowi on bardziej wydajną alternatywę dla długiego odpytywania. WebSocket umożliwia dwukierunkowy przepływ danych, pozwalając klientowi i serwerowi na asynchroniczne wysyłanie wiadomości. Eliminuje to potrzebę częstych żądań HTTP i zmniejsza obciążenie sieci. WebSocket doskonale nadaje się do aplikacji wymagających natychmiastowych aktualizacji i interakcji w czasie rzeczywistym.

[**Zdarzenia wysyłane przez serwer (SSE):**](https://www.pubnub.com/guides/server-sent-events/)

SSE to jednokierunkowa technologia komunikacji, która pozwala serwerowi na przesyłanie danych do klienta za pośrednictwem pojedynczego, długotrwałego połączenia HTTP. Dzięki SSE serwer może wysyłać wiele aktualizacji do klienta bez konieczności ciągłego wykonywania żądań przez klienta. Serwer inicjuje połączenie i wysyła dane jako serię zdarzeń. Klient odbiera te zdarzenia i może je obsługiwać zgodnie z potrzebami.

Wybierając technologię do implementacji długiego odpytywania w aplikacji, należy wziąć pod uwagę kilka czynników:

-   Skalowalność: Upewnij się, że wybrana technologia może obsłużyć dużą liczbę jednoczesnych połączeń i może skalować się wraz ze wzrostem bazy użytkowników. WebSocket i SSE są generalnie bardziej skalowalne niż długie odpytywanie oparte na HTTP, ponieważ pozwalają na bardziej efektywne wykorzystanie zasobów serwera.
    
-   Bezpieczeństwo: Należy rozważyć wpływ wybranej technologii na bezpieczeństwo. WebSocket i SSE można zabezpieczyć za pomocą protokołów szyfrowania, takich jak [SSL/TLS](https://www.pubnub.com/guides/ssl-tls/), zapewniając prywatność i integralność danych. Długie odpytywanie oparte na protokole HTTP może być również zabezpieczone, ale może wymagać dodatkowego uwierzytelniania i środków kontroli dostępu.
    
-   Obsługa przeglądarki: Sprawdź kompatybilność wybranej technologii z przeglądarką. WebSocket i SSE mają lepszą obsługę przeglądarek niż długie odpytywanie oparte na HTTP, które może wymagać dodatkowych technik lub opcji awaryjnych dla starszych przeglądarek.
    
-   Złożoność wdrożenia: Oceń łatwość wdrożenia i utrzymania wybranej technologii. Długie odpytywanie oparte na protokole HTTP jest stosunkowo proste, podczas gdy WebSocket i SSE mogą wymagać bardziej zaawansowanej wiedzy i infrastruktury. Weź pod uwagę poziom wiedzy dostępnej w zespole programistów oraz zasoby wymagane do wdrożenia i utrzymania wybranej technologii.
    

**Long polling vs. WebSockets**
-------------------------------

Long polling[i](https://www.pubnub.com/blog/long-polling-vs-websockets/) WebSockets to techniki umożliwiające uzyskanie połączenia w czasie rzeczywistym między klientem (takim jak przeglądarka internetowa) a serwerem. Chociaż służą one podobnemu celowi, mają znaczące różnice.

Long polling to technika, w której klient wysyła żądanie do serwera WWW, a serwer utrzymuje połączenie otwarte, dopóki nie będzie miał nowych danych do odesłania. Serwer może odpowiedzieć natychmiast, jeśli ma dostępne nowe dane lub odczekać określony czas przed wysłaniem pustej odpowiedzi. W obu przypadkach, gdy klient otrzyma odpowiedź, natychmiast wysyła kolejne żądanie do serwera w celu nawiązania nowego połączenia. Proces ten powtarza się w sposób ciągły, umożliwiając serwerowi przesyłanie aktualizacji do klienta, gdy tylko staną się one dostępne.

Z drugiej strony, WebSockets zapewniają trwały, dwukierunkowy kanał komunikacji między klientem a serwerem. W przeciwieństwie do długiego odpytywania, w którym nowe połączenie jest nawiązywane dla każdego żądania, połączenie WebSocket jest nawiązywane raz i utrzymywane otwarte przez czas nieokreślony. Pozwala to na komunikację w czasie rzeczywistym z niewielkimi opóźnieniami w obu kierunkach. Serwer może przesyłać dane do klienta w dowolnym momencie, a klient może również wysyłać dane do serwera bez oczekiwania na odpowiedź.

### Podobieństwa między long polling i Web Sockets:

1\. Aktualizacje w czasie rzeczywistym: Zarówno long polling, jak i WebSockets umożliwiają komunikację w czasie rzeczywistym między serwerem a klientem, pozwalając na natychmiastowe aktualizacje bez ciągłego odpytywania lub odświeżania.

2\. Mniejsze obciążenie serwera: Obie techniki minimalizują niepotrzebne żądania, wysyłając dane tylko wtedy, gdy są one dostępne, zmniejszając obciążenie serwera i poprawiając skalowalność.

3\. Szerokie wsparcie dla języków i frameworków: Wiele [popularnych języków programowania](https://www.pubnub.com/docs/sdks) i frameworków obsługuje long polling i WebSockets, dzięki czemu są one dostępne dla programistów z różnych ekosystemów.

### Różnice pomiędzy long polling i Web Sockets:

1\. [Opóźnienie](https://www.pubnub.com/guides/whats-so-important-about-low-latency/): Długie odpytywanie wprowadza opóźnienia, ponieważ występuje opóźnienie między wysłaniem odpowiedzi przez serwer a jej odebraniem przez klienta. WebSockets zapewniają dwukierunkową komunikację o niskim opóźnieniu, umożliwiając szybsze działanie w czasie rzeczywistym.

2\. Zużycie zasobów: Długie odpytywanie wymaga od serwera utrzymywania otwartych połączeń z każdym klientem, potencjalnie powodując zużycie zasobów i ograniczając liczbę jednoczesnych połączeń. WebSockets używają jednak trwałego połączenia, zmniejszając ogólne zużycie zasobów.

3\. Skalowalność: Potrzeba utrzymywania otwartych połączeń przez dłuższy czas może stanowić wyzwanie dla poziomego skalowania serwera. Dzięki trwałemu połączeniu, WebSockets pozwalają na lepszą skalowalność, ponieważ nie wymagają wielu otwartych połączeń.

Zarówno długie odpytywanie, jak i WebSockets oferują aktualizacje w czasie rzeczywistym i zmniejszają obciążenie serwera, ale różnią się opóźnieniem, zużyciem zasobów i skalowalnością. Web sockets zapewniają szybszą, dwukierunkową komunikację przy zmniejszonym zużyciu zasobów, dzięki czemu są odpowiednie dla aplikacji wymagających niskiego opóźnienia i wysokiej skalowalności. Z drugiej strony, długie odpytywanie może być dobrą alternatywą, gdy niskie opóźnienia nie są krytyczne, a liczba jednoczesnych połączeń jest stosunkowo niewielka. Programiści powinni wziąć pod uwagę te czynniki przy wyborze między tymi dwoma technikami dla swoich [aplikacji do czatu i przesyłania wiadomości w czasie rzeczywistym](https://www.pubnub.com/guides/real-time-messaging-benefits-basics-and-first-steps/).

**Długie odpytywanie a zdarzenia wysyłane przez serwer (SSE)**
--------------------------------------------------------------

[SSE](https://www.pubnub.com/blog/websockets-alternatives/) jest podobne do long polling pod względem prostoty i łatwości implementacji, ale zapewnia bardziej wydajny i ustandaryzowany sposób komunikacji między serwerem a klientem. Przyjrzyjmy się kilku dodatkowym podobieństwom i różnicom między tymi dwiema technologiami.

### Podobieństwa między long polling i SSE:

1.  Aktualizacje w czasie rzeczywistym: Zarówno long polling, jak i SSE umożliwiają komunikację w czasie rzeczywistym między serwerem a klientem, pozwalając na natychmiastowe aktualizacje bez ciągłego odpytywania lub odświeżania.
    
2.  Mniejsze obciążenie serwera: Obie techniki minimalizują niepotrzebne żądania, wysyłając dane tylko wtedy, gdy są one dostępne, zmniejszając obciążenie serwera i poprawiając skalowalność.
    
3.  Szerokie wsparcie dla języków i frameworków: Wiele popularnych języków programowania i frameworków obsługuje long polling i SSE, dzięki czemu są one dostępne dla programistów z różnych ekosystemów.
    

### Różnice pomiędzy long polling i SSE:

1.  Opóźnienia: Długie odpytywanie wprowadza opóźnienia, ponieważ istnieje opóźnienie między wysłaniem odpowiedzi przez serwer a otrzymaniem jej przez klienta. Z drugiej strony, SSE zapewnia ciągły strumień danych z serwera do klienta, zmniejszając opóźnienia i poprawiając możliwości w czasie rzeczywistym.
    
2.  Zużycie zasobów: Długie odpytywanie wymaga od serwera utrzymywania otwartych połączeń z każdym klientem, potencjalnie powodując zużycie zasobów i ograniczając liczbę jednoczesnych połączeń. SSE wykorzystuje jednak pojedyncze, długotrwałe połączenie, zmniejszając ogólne zużycie zasobów.
    
3.  Skalowalność: Potrzeba utrzymywania otwartych połączeń przez długi czas może stanowić wyzwanie dla poziomego skalowania serwera. Dzięki pojedynczemu połączeniu na klienta, SSE pozwala na lepszą skalowalność, ponieważ nie wymaga wielu otwartych połączeń.
    

Jak zoptymalizować długie odpytywanie?
--------------------------------------

Długie odpytywanie jest używane w aplikacjach do czatowania i przesyłania wiadomości w czasie rzeczywistym, aby zapewnić niemal natychmiastowe aktualizacje klienta. Może ono jednak wymagać dużej ilości zasobów i powodować problemy ze skalowalnością, jeśli nie zostanie odpowiednio zoptymalizowane. Oto kilka technik, które można wykorzystać do optymalizacji długiego odpytywania w celu uzyskania lepszej wydajności i skalowalności.

**Grupowanie odpowiedzi:** Zamiast wysyłać odpowiedź dla każdego żądania, należy grupować [wiele](https://developers.google.com/classroom/best-practices/batch#:~:text=separate%20HTTP%20request.-,Response%20to%20a%20batch%20request,same%20order%20as%20the%20requests.) aktualizacji i wysyłać je w jednej odpowiedzi. Zmniejsza to liczbę żądań HTTP i pomaga zminimalizować narzut.

**Kompresja:** Kompresja danych przed wysłaniem ich przez sieć może znacznie zmniejszyć rozmiar ładunku, co skutkuje szybszą transmisją i mniejszym zużyciem przepustowości. W tym celu można wykorzystać techniki takie jak [kompresja Gzip](https://en.wikipedia.org/wiki/Gzip).

**Buforowanie:** Wdrożenie [warstwy buforowania](https://aws.amazon.com/caching/) może pomóc zmniejszyć obciążenie bazy danych lub innych źródeł danych. Buforując często żądane dane, kolejne żądania mogą być obsługiwane z samej pamięci podręcznej, skracając czas odpowiedzi i poprawiając skalowalność.

**Pula połączeń:** Utrzymywanie puli połączeń wielokrotnego użytku zamiast tworzenia nowego połączenia dla każdego żądania może poprawić wydajność mechanizmu długiego odpytywania. Eliminuje to narzut związany z nawiązywaniem nowego połączenia dla każdego żądania, co skutkuje lepszą wydajnością.

**Dławienie i ograniczanie szybkości:** Wdrożenie mechanizmów dławienia i ograniczania szybkości może zapobiec przeciążeniu serwera nadmiernymi żądaniami. Zapewnia to sprawiedliwy przydział zasobów i zapobiega nadużyciom, poprawiając wydajność i skalowalność.

[**Równoważenie obciążenia**](https://www.pubnub.com/guides/load-balancing/)**:** Dystrybucja przychodzących żądań na wiele serwerów przy użyciu technik równoważenia obciążenia może pomóc w rozłożeniu obciążenia i zapobiec przeciążeniu pojedynczego serwera. Poprawia to ogólną wydajność i skalowalność systemu długiego odpytywania.

**Monitorowanie i optymalizacja:** Regularne monitorowanie wydajności systemu long polling i identyfikowanie wszelkich wąskich gardeł lub obszarów wymagających poprawy może pomóc w optymalizacji systemu pod kątem lepszej wydajności i skalowalności. Techniki takie jak profilowanie, testowanie obciążenia i dostrajanie wydajności mogą być wykorzystywane do identyfikacji i rozwiązywania wszelkich problemów związanych z wydajnością.

**Przetwarzanie asynchroniczne (Async):** Przeniesienie czasochłonnych zadań do [procesów asynchronicznych](https://www.pubnub.com/blog/asynchronous-tcp-publishing-on-a-single-tcp-payload/) lub pracowników działających w tle może pomóc uwolnić zasoby i poprawić szybkość reakcji systemu długiego odpytywania. Można to uzyskać za pomocą kolejek komunikatów, procesów roboczych lub obliczeń rozproszonych.

**Limity czasu połączeń:** Wdrożenie odpowiednich limitów czasu połączeń może pomóc w zapobieganiu niepotrzebnemu zużywaniu zasobów przez bezczynne połączenia. Zamykając bezczynne połączenia po pewnym okresie bezczynności, system może zwolnić zasoby dla innych klientów i poprawić skalowalność.

**Skalowalna infrastruktura:** Upewnienie się, że infrastruktura bazowa jest skalowalna i może obsłużyć oczekiwane obciążenie, ma kluczowe znaczenie dla optymalizacji długiego odpytywania. Może to obejmować wykorzystanie technologii takich jak przetwarzanie w chmurze, automatyczne skalowanie lub [konteneryzacja](https://www.pubnub.com/guides/containerization/) w celu dynamicznego przydzielania zasobów w zależności od zapotrzebowania.

Jakie języki programowania są kompatybilne z Long Polling?
----------------------------------------------------------

Kilka języków programowania jest kompatybilnych z implementacją długiego odpytywania w aplikacjach do czatowania i przesyłania wiadomości w czasie rzeczywistym. Oto kilka przykładów:

1.  JavaScript: Long Polling jest powszechnie łączony z [JavaScript](https://www.pubnub.com/blog/the-comprehensive-pubnub-publish-subscribe-javascript-api-tutorial/), umożliwiając płynną implementację po stronie klienta. Struktury [JavaScript](https://www.pubnub.com/guides/javascript/), takie jak [React](https://www.pubnub.com/blog/building-a-chat-app-with-react-native-and-pubnub-part-one-messaging/), Angular i [Vue.js](https://www.pubnub.com/blog/building-a-laravel-chat-app-with-php-vue-js-and-pubnub/) , zapewniają biblioteki i narzędzia, które upraszczają wdrażanie długiego odpytywania w aplikacji.
    
2.  PHP: [PHP](https://www.pubnub.com/docs/sdks/php) jest popularnym językiem po stronie serwera, często wykorzystywanym w tworzeniu stron internetowych. Zapewnia funkcje i biblioteki, które umożliwiają programistom efektywne wdrażanie długiego odpytywania. Na przykład framework PHP Laravel oferuje wsparcie dla długiego odpytywania poprzez system transmisji zdarzeń.
    
3.  Python: [Python](https://www.pubnub.com/blog/socket-programming-in-python-client-server-p2p/) to kolejny wszechstronny język, który może być wykorzystywany do implementacji długiego odpytywania. Frameworki Pythona, takie jak Django i Flask, zapewniają narzędzia i biblioteki do tworzenia aplikacji czasu rzeczywistego przy użyciu technik długiego odpytywania.
    
4.  Ruby: [Ruby](https://www.pubnub.com/docs/sdks/ruby) to dynamiczny, zorientowany obiektowo język programowania, dobrze nadający się do tworzenia stron internetowych. Popularny framework webowy, [Ruby on Rails](https://rubyonrails.org/), wspiera long polling poprzez różne biblioteki i rozszerzenia.
    
5.  Java: [Java](https://www.java.com/en/) jest szeroko stosowanym językiem w programowaniu korporacyjnym i zapewnia wsparcie dla długiego odpytywania. Frameworki Java, takie jak Spring i Java EE, oferują biblioteki i narzędzia do implementacji długiego odpytywania w aplikacjach czasu rzeczywistego.
    
6.  .NET/C#: [Framework](https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet-framework).NET z [językiem programowania C#](https://www.pubnub.com/docs/sdks/c-sharp) jest powszechnie używany do tworzenia aplikacji internetowych. Zapewnia biblioteki i frameworki, takie jak ASP.NET [SignalR](https://www.pubnub.com/guides/what-is-signalr/), które upraszczają implementację technik długiego odpytywania.
    

To tylko kilka przykładów języków programowania, które obsługują long polling. Wiele innych języków i frameworków może również implementować długie odpytywanie w aplikacjach do czatowania i przesyłania wiadomości w czasie rzeczywistym.

Wybierając język programowania do implementacji długiego odpytywania, należy wziąć pod uwagę kilka czynników. Po pierwsze, należy rozważyć specyficzne wymagania aplikacji i wybrać język, który najlepiej spełnia te wymagania. Weź pod uwagę skalowalność, wydajność i łatwość implementacji na zapleczu.

Dodatkowo należy wziąć pod uwagę społeczność i ekosystem otaczający dany język programowania. Silna i aktywna społeczność może zapewnić wsparcie, samouczki, dokumentację i zasoby ułatwiające wdrażanie długiego odpytywania w aplikacji.

W jaki sposób long polling jest wykorzystywany w aplikacjach czasu rzeczywistego?
---------------------------------------------------------------------------------

Jedną z głównych zalet long pollingu jest jego wydajność w dostarczaniu aktualizacji w czasie rzeczywistym. Zminimalizowanie liczby żądań wysyłanych przez klientów znacznie zmniejsza opóźnienia w sieci i poprawia ogólną wydajność. Dodatkowo pozwala serwerom na natychmiastowe przesyłanie aktualizacji do klientów, zapewniając szybkie dostarczanie wiadomości i powiadomień.

Co więcej, długie odpytywanie ułatwia skalowalność w aplikacjach czasu rzeczywistego. Zmniejszenie liczby otwartych połączeń umożliwia serwerom obsługę większej liczby jednoczesnych klientów. Jest to szczególnie istotne w aplikacjach do czatowania i przesyłania wiadomości, gdzie liczba użytkowników stale się zmienia.

Długie odpytywanie pomaga oszczędzać zasoby systemowe. W przypadku tradycyjnego odpytywania, każde żądanie wymaga od serwera przetworzenia i odpowiedzi, nawet bez aktualizacji. To ciągłe przetwarzanie może obciążać zasoby serwera i negatywnie wpływać na wydajność. W przeciwieństwie do tego, długie odpytywanie uruchamia przetwarzanie serwera tylko wtedy, gdy dostępne są nowe dane lub wystąpi przekroczenie limitu czasu. Minimalizuje to obciążenie zasobów systemowych i pozwala na lepszą skalowalność i niezawodność.

Jednak wdrożenie długiego odpytywania może również wiązać się z pewnymi wyzwaniami. Jednym z nich jest efektywne zarządzanie zasobami serwera. Ponieważ długie odpytywanie wiąże się z utrzymywaniem otwartych połączeń przez dłuższy czas, obsługa wielu jednoczesnych połączeń wymaga znacznych zasobów serwera. Problem ten można rozwiązać za pomocą technologii takich jak przetwarzanie w chmurze, automatyczne skalowanie lub [konteneryzacja](https://www.pubnub.com/blog/buzzword-microservices-serverless-functions-programmable-infrastructur/) w celu dynamicznego przydzielania zasobów w zależności od zapotrzebowania. Dzięki automatycznemu skalowaniu zasobów w górę lub w dół w oparciu o liczbę aktywnych połączeń, deweloperzy mogą zapewnić, że serwer będzie w stanie skutecznie obsłużyć oczekiwane obciążenie.

Kolejnym wyzwaniem jest obsługa limitów czasu i awarii połączeń. W przypadku długiego odpytywania serwer utrzymuje żądanie otwarte do momentu pojawienia się nowych danych lub przekroczenia limitu czasu. Jeśli wystąpi przekroczenie limitu czasu, serwer musi obsłużyć je z wdziękiem i zamknąć połączenie, aby zwolnić zasoby. Dodatkowo, jeśli połączenie nie powiedzie się, serwer powinien być w stanie to wykryć i odpowiednio obsłużyć próby ponownego połączenia. Wdrażając solidne mechanizmy obsługi błędów i zarządzania połączeniami, programiści mogą zapewnić niezawodność długiego odpytywania w aplikacjach czasu rzeczywistego.

Bezpieczeństwo jest kolejnym ważnym aspektem przy wdrażaniu długiego odpytywania w aplikacjach czasu rzeczywistego. Ponieważ długie odpytywanie wiąże się z utrzymywaniem trwałych połączeń między klientami a serwerami, kluczowe znaczenie ma zabezpieczenie tych połączeń w celu ochrony wrażliwych danych. Wdrożenie protokołów Secure Socket Layer (SSL) lub Transport Layer Security (TLS) może pomóc w szyfrowaniu danych przesyłanych przez długie połączenia pollingowe i zapobiec podsłuchiwaniu lub nieautoryzowanemu dostępowi.

Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu. PubNub jest idealny dla każdej aplikacji wymagającej danych w czasie rzeczywistym.

Zarejestruj się[w bezpłatnym okresie prób](https://admin.pubnub.com/#/register) nym i uzyskaj do 200 MAU lub 1 mln transakcji miesięcznie.

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://pubnub.com/guides/long-polling/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).