2015-07-30 30 views
29

Piszę serwer dla gry na iOS. Gra jest oparta na turach i jedyny czas, kiedy serwer musi przekazać informacje klientowi, to powiadomienie o ruchu przeciwnika.Różnice między websockets i długim pollingiem dla serwera gier opartego na turach

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

Dodatkowo, czy jest coś dodatkowego do rozważenia między websockets i długim sondowaniem, jeśli jestem zainteresowany również tworzeniem klienta WWW?

+3

Można również użyć powiadomień push powiadomić klienta o nowych danych. Uważam, że jest bardziej efektywny (z punktu widzenia baterii), niż dwa rozważane rozwiązania. – pteofil

+1

jak to by działało, gdyby użytkownik nadal znajdował się w aplikacji? – acidic

+2

Otrzymujesz powiadomienie w aplikacji, gdy otrzymasz powiadomienie push. – pteofil

Odpowiedz

73

Co to jest długi głosowanie?

enter image description here Odmianą techniki tradycyjnego odpytywania i umożliwia emulację na wysyłanie informacji z serwera do klienta. W przypadku długiego odpytywania klient żąda informacji od serwera w sposób podobny do zwykłej ankiety.

  • Jeśli serwer nie ma dostępnych żadnych informacji dla klienta, zamiast wysyłać pustą odpowiedź, serwer posiada żądanie i czeka na niektóre informacje były dostępne.
  • Gdy informacje stają się dostępne (lub po upływie odpowiedniego czasu oczekiwania), , pełna odpowiedź zostaje wysłana do klienta. Klient zwykle będzie wtedy , a następnie natychmiast ponownie zażąda informacji z serwera, dzięki czemu serwer prawie zawsze będzie miał dostępne żądanie oczekiwania, które może ono uzyskać w celu dostarczenia danych w odpowiedzi na zdarzenie.

    W kontekście web/AJAX, długi polling jest również znany jako Programowanie komet.

Co o WebSockets?

enter image description here WebSockets zapewnić trwałe połączenie między klientem a serwerem, że obie strony mogą wykorzystać, aby rozpocząć wysyłanie danych w dowolnym momencie.

  • Klient ustanawia połączenie WebSocket w procesie znanym jako jako uzgadnianie WebSocket. Ten proces rozpoczyna się od wysłania przez klienta zwykłego żądania HTTP do serwera.
  • W tym żądaniu znajduje się nagłówek aktualizacji, który informuje serwer , że klient chce ustanowić połączenie WebSocket.

Wnioski:

Jeśli istnieje potrzeba Real komunikacji w czasie można bardzo dobrze wybrać WebSocket.

Ale w Long Polling:

Połączenie odbywa się otwarty między klientem a serwerem WWW tak, że gdy serwer ma nowych informacji może popchnąć go do klienta. To żądanie zostanie zakończone. Następnie zostaje wysłane nowe żądanie między klientem a serwerem, a następnie czekać na kolejną aktualizację z serwera. To samo połączenie TCP jest ogólnie otwarte w sposób ciągły w wielu żądaniach z powodu utrzymania HTTP/1.1.

zewnętrzne i inne względy:

PubNub long polling vs sockets - mobile battery life

What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet?

long polling in objective-C

Websocket Introduction

Websocket Vs Long Polling

Using Websockets in Apps

Websocket Application

PushTechnology-Long Polling