Soluzioni per l'implementazione di un server di gioco full-duplex?

7

Sto progettando un server di gioco che verrebbe utilizzato per i terminali Android. Sono stato alla ricerca di prodotti o framework da utilizzare per le comunicazioni a due vie, ma non ho trovato nulla che valesse la pena menzionare.

Semplicemente, voglio implementare l'architettura di seguito:

In altre parole, una connessione TCP dal client al server e un'altra dal server al client, per evitare di dover sempre essere connessi.

Per essere chiari, il mio obiettivo principale è che il server sia in grado di inviare dati al client , senza che il client abbia per richiederlo esplicitamente. Faccio non che il client debba interrogare il server per vedere se ci sono nuovi dati.

Quale combinazione di strategie di progettazione, protocolli di rete e / o prodotti o strutture (se esistenti) sarebbe appropriata per l'implementazione di questa architettura?

    
posta A.Quiroga 01.11.2011 - 11:39
fonte

1 risposta

8

Il problema è che spesso il client si trova dietro un NAT / firewall, il che significa che il server non può avviare una connessione TCP al client, perché il client non ha un indirizzo IP globalmente instradabile e / o perché il firewall bloccherà i pacchetti TCP in arrivo inaspettati provenienti dal server.

Ciò significa che qualsiasi connessione TCP dovrà essere avviata dal lato client. Una volta fatto, hai la possibilità di lasciare la connessione TCP aperta indefinitamente (cosa che non vuoi fare) o chiudere la connessione TCP dopo che un business immediato è stato preso in considerazione (ma ciò significa che il client dovrà connettersi ancora una volta per vedere se nel frattempo sono arrivati altri aggiornamenti, che è il polling, che non vuoi fare anche tu.

Quindi sei un po 'bloccato. L'unica soluzione possibile a cui riesco a pensare è quella di impostare un numero di server proxy che non siano protetti da firewall / NAT e che i client Android si connettano costantemente a loro. I server proxy possono quindi inoltrare le richieste al server principale e, dal momento che controllano i proxy, è possibile assicurarsi che il server sia in grado di riconnettersi a loro se necessario. Se sei fortunato, qualcun altro ha già configurato un sistema come questo e puoi semplicemente portarlo su di esso ... forse questo farà quello che vuoi.

    
risposta data 05.11.2011 - 17:34
fonte

Leggi altre domande sui tag