Różnice między gniazdami internetowymi a długim odpytywaniem dla serwera gier turowych

90

Piszę serwer do gry na iOS. Gra jest turowa, a serwer potrzebuje tylko informacji do klienta, aby powiadomić o ruchu przeciwnika.

Jestem ciekawy, czy ktoś mógłby wypowiedzieć się na temat wydajności i łatwości implementacji różnic między używaniem websocketów a długim sondowaniem. Ponadto, jeśli korzystam z gniazd internetowych, czy powinienem używać go tylko do odbierania informacji i wysyłania żądań POST do wszystkiego innego, czy też cała komunikacja powinna odbywać się przez gniazdo sieciowe?

Dodatkowo, czy jest coś do rozważenia między gniazdami sieciowymi a długim odpytywaniem, jeśli jestem zainteresowany również utworzeniem klienta internetowego?

kwaśny
źródło
6
Możesz także użyć powiadomień push, aby powiadomić klienta o nowych danych. Uważam, że jest bardziej wydajny (pod względem baterii), niż rozważane dwa rozwiązania.
pteofil
1
jak by to działało, gdyby użytkownik nadal był w aplikacji?
kwaśne
4
Otrzymasz powiadomienie w aplikacji, gdy otrzymasz powiadomienie push.
pteofil

Odpowiedzi:

177

Co to jest długie odpytywanie?

wprowadź opis obrazu tutaj Odmiana tradycyjnej techniki odpytywania, która umożliwia emulację wypychania informacji z serwera do klienta. W przypadku długiego odpytywania klient żąda informacji od serwera w podobny sposób, jak normalne sondowanie.

  • Jeśli serwer nie ma żadnych informacji dostępnych dla klienta, zamiast wysłać pustą odpowiedź, zatrzymuje żądanie i czeka na udostępnienie niektórych informacji.
  • Po udostępnieniu informacji (lub po upływie odpowiedniego czasu) do klienta wysyłana jest pełna odpowiedź. Klient normalnie natychmiast ponownie zażąda informacji z serwera, tak że serwer prawie zawsze będzie miał dostępne żądanie oczekiwania, którego może użyć do dostarczenia danych w odpowiedzi na zdarzenie.

    W kontekście sieciowym / AJAX, długie odpytywanie jest również znane jako programowanie komet.

A co z Websockets?

wprowadź opis obrazu tutaj WebSockets zapewniają trwałe połączenie między klientem a serwerem, którego obie strony mogą użyć do rozpoczęcia wysyłania danych w dowolnym momencie.

  • Klient nawiązuje połączenie WebSocket za pomocą procesu znanego jako uzgadnianie protokołu WebSocket. Ten proces rozpoczyna się od wysłania przez klienta zwykłego żądania HTTP do serwera.
  • Żądanie to zawiera nagłówek Upgrade, który informuje serwer, że klient chce nawiązać połączenie WebSocket.

Wniosek :

Jeśli istnieje potrzeba komunikacji w czasie rzeczywistym, możesz bardzo dobrze wybrać gniazda sieciowe.

Ale w długiej ankiecie:

Połączenie między klientem WWW a serwerem WWW jest utrzymywane w stanie otwartym, więc gdy serwer uzyska nowe informacje, może je przesłać do klienta. Ta prośba jest wtedy zakończona. Następnie między klientem a serwerem wysyłane jest nowe żądanie, a następnie czeka na kolejną aktualizację z serwera. To samo połączenie TCP jest zwykle trwale otwarte dla wielu żądań ze względu na utrzymywanie aktywności HTTP / 1.1.

Odniesienia i inne kwestie:

Długie odpytywanie PubNub a gniazda - żywotność baterii mobilnej

Co to jest Long-Polling, Websockets, Server-Sent Events (SSE) i Comet?

długie odpytywanie w celu-C

Wprowadzenie do Websocket

Websocket Vs Long Polling

Korzystanie z Websockets w aplikacjach

Aplikacja Websocket

Polling PushTechnology-Long

Tharif
źródło