Differenze tra websocket e polling lungo per server di gioco a turni


93

Sto scrivendo un server per un gioco iOS. Il gioco è a turni e l'unica volta che il server ha bisogno di inviare informazioni al client è per notificare la mossa dell'avversario.

Sono curioso se qualcuno potesse commentare le prestazioni e la facilità delle differenze di implementazione tra l'utilizzo di websocket e il polling lungo. Inoltre, se ho usato websocket, dovrei usarlo solo per ricevere informazioni e inviare richieste POST per tutto il resto o tutte le comunicazioni dovrebbero avvenire tramite websocket?

Inoltre, c'è qualcosa da considerare in più tra i websocket e il polling lungo se sono interessato a creare anche un client web?


6
È inoltre possibile utilizzare le notifiche push per notificare al cliente nuovi dati. Credo di essere più efficiente (per quanto riguarda la batteria), rispetto alle tue due soluzioni considerate.
pteofil

1
come funzionerebbe se l'utente fosse ancora nell'app?
acido il

4
Riceverai una notifica nell'app quando ricevi anche una notifica push.
pteofil

Risposte:


180

Cos'è il polling lungo?

inserisci qui la descrizione dell'immagine Una variazione della tradizionale tecnica di polling e consente l'emulazione di un push di informazioni da un server a un client. Con il polling lungo, il client richiede informazioni dal server in modo simile a un normale polling.

  • Se il server non ha alcuna informazione disponibile per il client, invece di inviare una risposta vuota, il server trattiene la richiesta e attende che alcune informazioni siano disponibili.
  • Una volta che le informazioni diventano disponibili (o dopo un opportuno timeout), viene inviata una risposta completa al cliente. Il client normalmente quindi ri-richiederà immediatamente le informazioni dal server, in modo che il server avrà quasi sempre una richiesta in attesa disponibile che può utilizzare per fornire i dati in risposta a un evento.

    In un contesto web / AJAX, il polling lungo è anche noto come programmazione Comet.

E i Websocket?

inserisci qui la descrizione dell'immagine I WebSocket forniscono una connessione persistente tra un client e un server che entrambe le parti possono utilizzare per iniziare a inviare dati in qualsiasi momento.

  • Il client stabilisce una connessione WebSocket tramite un processo noto come handshake WebSocket. Questo processo inizia con il client che invia una normale richiesta HTTP al server.
  • In questa richiesta è inclusa un'intestazione di aggiornamento che informa il server che il client desidera stabilire una connessione WebSocket.

Conclusione :

Se c'è bisogno di una comunicazione in tempo reale puoi benissimo optare per i websocket.

Ma in Long Polling:

Viene mantenuta aperta una connessione tra il client Web e il server Web in modo che quando il server dispone di nuove informazioni può inviarle al client. Quella richiesta è quindi terminata. Viene quindi effettuata una nuova richiesta tra il client e il server e quindi si attende un altro aggiornamento dal server. La stessa connessione TCP è generalmente aperta in modo persistente durante più richieste a causa di keep-alive HTTP / 1.1.

Riferimenti e altre considerazioni:

PubNub long polling vs socket - durata della batteria mobile

Cosa sono Long-Polling, Websocket, Server-Sent Events (SSE) e Comet?

lungo sondaggio nell'obiettivo-C

Introduzione a Websocket

Websocket Vs Long Polling

Utilizzo di Websocket nelle app

Applicazione Websocket

PushTechnology-Long Polling

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.