Domanda

Ho creato un semplice server di chat che è guidato da polling cliente. I client inviano richieste di dati ogni pochi secondi, e vengono consegnati tutti i nuovi messaggi e le informazioni sul fatto che la loro pari è ancora collegata.

Dato che il client è in esecuzione su una piattaforma mobile (iPhone), ho cercato di modi di sbarazzarsi del polling, che drena rapidamente la batteria. Ho letto che è possibile mantenere una connessione http aperta a tempo indeterminato, ma non ho capito come utilizzare questa tecnica nella pratica. Sto anche chiedendo se tali collegamenti sono abbastanza stabile da utilizzare in un ambiente mobile.

Lo scenario ideale sarebbe che il server invia solo i dati per i clienti quando si è verificato un evento che li riguarda (come ad esempio un peer per inviare un messaggio o di andare fuori linea).

E 'consigliabile cercare di ottenere questo risultato su HTTP, o dovrebbe devo scrivere il mio protocollo su TCP? Che ci vuole essere per personalizzare XMPP per il mio bisogno (il mio server di chat ha alcune caratteristiche speciali che avrei dovuto implementare facilmente).

È stato utile?

Soluzione

Altri suggerimenti

Credo che stai descrivendo XMPP su BOSHI.

http://xmpp.org/extensions/xep-0206.html

Ho usato questo metodo di rilegatura http-tra un server di chat e JavaScript client sui dispositivi non mobili. Ha funzionato bene per me.

Come si potrebbe verificare questo progetto che utilizza una varietà di tecniche tra cometa. Rilasciare dettagli sono qui , ecco un frammento da quella pagina

  

E 'il mio piacere distinto per essere in grado   di annunciare la prima proiezione pubblica   di un progetto che ho lavorato su   nel mio tempo libero nell'ultimo mese o   due, una nuova Web Based di chat IRC   applicazione.

     

Questo progetto riunisce un sacco di   nuove tecnologie che dovevano essere   sviluppata per rendere questo fattibile,   scalabile ed efficiente.

     

Alcuni degli strumenti sottostanti costruire a   rendere questo posible che considero   ‘Abbastanza stabile’ sono già rilasciato,   come ad esempio il php Socket Daemon biblioteca   ho scritto per essere in grado di affrontare   centinaia fino a migliaia di   connessioni “Comet” http, e un pari   quantità di connessioni client IRC.

Ho appena trovato questo articolo me stesso, che descrive la seguente tecnica (che ho fatto riferimento nella domanda):

  

... hanno il cliente fa una richiesta HTTP   e che il server tenere la richiesta   sulla coda fino a quando c'è un messaggio   spingere. se la connessione TCP / IP è   perso o volte-out, il client   fare una nuova richiesta HTTP, e il ritardo   sarà solo il tempo di andata e ritorno per un   richiesta pair risposta /. . . questo modello   richiede in modo efficace due TCP / IP   connessioni per HTTP, il programma e   del server, anche se nessuno permanente e   quindi mobile friendly

Credo che questo è quasi impossibile e pericoloso. La connessione internet funziona significato senza stato e senza connessione che la connessione tra client e server è sempre gestito come inaffidabili. E questo non è per divertimento.

Per cercare di ottenere una connessione stateful si stanno introducendo nuovi problemi. Soprattutto da un'applicazione 3g. Che cosa succede se le interruzioni di connessione? Non avete controllo del server e non può spingere.

penso che sarebbe ancora più facile per inviare messaggi SMS / di testo e dispone di un'applicazione che gestisce questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top