2015-05-10 10 views
6

Sto facendo un'applicazione di chat per Android. Per questo, ho deciso di utilizzare GCM (Google Cloud Messaging). Ma avendo studiato un po 'su di esso, ho letto che non dovrebbe essere usato per qualcosa come la chat.Devo utilizzare GCM per la comunicazione in tempo reale tra i dispositivi?

Implementerò la messaggistica upstream (inviando i dati dal dispositivo al GCM direttamente, senza un send-to-sync). Ecco i miei dubbi:

  • I messaggi verranno trasferiti immediatamente? (sarà abbastanza veloce che l'utente può vedere 'digitando'/visto)
  • Se tutti i dispositivi sono online, qual è la garanzia del messaggio da GCM che raggiunge il client.

Le ragioni principali che voglio utilizzare GCM è

  1. GCM utilizza la minor quantità di durata della batteria
  2. Questo è un androide-unica applicazione.

Se GCM non è quello che dovrei usare, cosa dovrei usare?

+0

Harvey, Sei riuscito a completare la chat con gcm o ejabberd? e ogni problema in quanto tale quando viene portato in produzione? – Ramesh

+0

Harvey sono in confusione circa lo stesso e con requisiti simili .. puoi aiutarmi a decidere se devo usare GCM per salvare il mio scopo o no? @Ramesh quali sono le tue opinioni? – Newbiee

+0

Hey newbiee, ho aggiornato la risposta. puoi indicare quali fattori ti stanno confondendo !! – Ramesh

risposta

1

Sto lavorando su un requisito simile e Guardando il requisito di poter mostrare feedback come digitando/lastseen ecc., Secondo la mia conoscenza, la soluzione basata su XMPP sarebbe appropriata.

puoi provare con il server xmpp disponibile come ejabberd/mangooseim (open source) installandolo sul tuo server e utilizzare asmack o qualsiasi altra libreria java lato client per comunicare con il tuo server. (Ci sono molti tutorial disponibili per questo).

Con questa configurazione, sarete in grado di arrivare allo stadio in cui sarete in grado di ottenere lo stato come "digitazione", "andato" quale whatsapp e anche alcuni client di chat come gtalk/pidgin shows.

Darebbe approssimativamente un'idea di come funzionano i client di chat esistenti.

Ejabberd è completamente scritto in erlang e se si desidera estendere qualsiasi funzionalità, la conoscenza di erlang è obbligatoria. (è specificamente progettato per sistemi altamente tolleranti e non-stop, che è stato utile nelle applicazioni di chat

GCM sarebbe sicuramente in grado di comunicare tra i telefoni Android 99,99% di volte con non molto ritardo ma se si desidera di avere lo status torrefattori come normali applicazioni di chat, si dovrà reinventare completamente la ruota

Aggiornamento:..

Ecco le considerazioni

dal client a al cliente BI desidera inviare messaggi di chat con ro astri e non è necessario memorizzare i messaggi su qualsiasi server centrale ma solo sui client: XMPP (come whatsapp)

nel caso in cui sia necessario memorizzare tutte le comunicazioni nel server: XMPP con driver sql o driver mongodb/gcm (in base sul tempo e sulle risorse)

nel caso in cui sia necessaria la comunicazione tra dispositivi non necessariamente in chat, quindi gcm dovrebbe essere sufficiente. Attualmente sto usando questo approccio nella mia app che è in diretta su playstore con la versione beta e funziona perfettamente nella maggior parte dei casi. Finora non ho visto molti colli di bottiglia.

+0

Questo è un bel succo. Supponiamo che io possa gestire la cosa dell'amico (roster) in qualche modo, GCM non sarà più efficiente nel risparmio della batteria? e ci sono altri svantaggi nell'uso di GCM? –

+0

sì gcm ottimizza l'utilizzo della batteria. ma non possiamo davvero confrontare xmpp e gcm entrambi sono per scopi diversi. gcm è usato per invocare il client Android dicendo che sono arrivati ​​nuovi dati che devono essere sincronizzati dal server delle applicazioni. ancora una volta come gcm viene a sapere quando sono arrivati ​​nuovi dati sul nostro server tramite una connessione xmpp (fare riferimento a questo link http://developer.android.com/google/gcm/ccs.html). – Ramesh

+0

Venendo a Ejabberd, si prega di verificare i concetti di stanze nella comunicazione xmpp (messaggio, iq e presenza) oltre a quello, memorizzando e consegnando messaggi quando l'utente è offline (tramite il loro mnesia db) e assicurandosi che non venga perso il messaggio. i flussi di lavoro pubsub (publish subscribe) come le tipiche chat di gruppo, molte altre funzionalità che formano la base per le applicazioni di chat sono gratuite usando il server ejabberd senza che tu le implementi. – Ramesh

Problemi correlati