Różnice między websocketami a długimi sondażami na turowy serwer gier
Piszę serwer do gry na iOS. Gra jest turowa i jedynym czasem, kiedy serwer musi przekazać informacje Klientowi, jest powiadomienie o ruchu przeciwnika.
Jestem ciekaw, czy ktoś mógłby skomentować wydajność i łatwość implementacji różnic między używaniem websockets a długim sondażem. Ponadto, jeśli korzystałem z websockets, powinienem używać go tylko do otrzymywania informacji i wysyłania żądań postów o Wszystko inne, czy cała komunikacja powinna odbywać się za pośrednictwem websocket?
DODATKOWO, czy jest coś do rozważenia między websockets i long ankiet, jeśli jestem zainteresowany również wykonaniem klienta WWW?
1 answers
Czym jest Long ankiet ?
Odmiana tradycyjnej techniki ankietowania i pozwala na emulację przekazu informacji z serwera do klienta. W przypadku długich ankiet, klient żąda informacji od serwera w podobny sposób do normalnej ankiety.
- jeśli serwer nie ma żadnych informacji dostępnych dla klienta, zamiast wysyłać pustą odpowiedź, serwer przechowuje żądanie i czeka na jakieś informacje dostępny.
-
Gdy informacja stanie się dostępna (lub po odpowiednim czasie), kompletna odpowiedź jest wysyłana do klienta. Klient będzie normalnie następnie natychmiast ponownie zażądać informacji z serwera, tak aby serwer prawie zawsze będzie miał dostępną prośbę oczekującą, że może służyć do dostarczania danych w odpowiedzi na zdarzenie.
W kontekście web/AJAX, long ankiet jest również znany jako Comet programming.
A co z Websockets ?
WebSockets zapewniają trwałe połączenie między Klientem a serwerem, które obie strony mogą wykorzystać do rozpoczęcia wysyłania danych w dowolnym momencie.
- Klient ustanawia połączenie WebSocket poprzez proces znany jako WebSocket handshake. Proces ten rozpoczyna się od klienta wysyłanie zwykłego żądania HTTP do serwera.
- nagłówek Upgrade jest dołączony do tego żądania, które informuje serwer że klient chce ustanowić Połączenie WebSocket.
Wniosek :
Jeśli istnieje potrzeba komunikacji w czasie rzeczywistym, Możesz bardzo dobrze zdecydować się na websockets .
Ale w długich sondażach:
Połączenie między web klientem a web serwerem jest otwarte tak, że gdy serwer ma nowe informacje, może je wypchnąć do klienta. Żądanie to jest następnie zakończone. Następnie między Klientem a serwerem jest dokonywane nowe żądanie, a następnie czekać na kolejną aktualizację z serwera. To samo Połączenie TCP jest zazwyczaj otwarte przez wiele żądań ze względu na HTTP/1.1 keep-alives.
Odniesienia i inne rozważania:
PubNub long polling vs sockets - mobile battery life
Czym są Long-Polling, Websockets, Server-Sent Events (SSE) i Comet?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:46:55