Design del sistema: applicazione chat e polling

1

Quale sarebbe il modo migliore per aggiungere funzionalità di chat a un android, a un ios e a un'app Web? Il sondaggio è davvero pessimo come dicono le persone?

I requisiti sono user to user messaging e chat room.

Ecco il mio processo di pensiero:

  1. Lungo polling con nella cache di memoria. L'endpoint di polling lungo controllerà continuamente la cache in memoria. Semplice da implementare.
  2. Server basato su XMPP come OpenFire. Difficile da ridimensionare orizzontalmente. Alcune altre implementazioni si adattano bene, ma l'installazione è più complessa.
  3. Websocket con nella cache di memoria. Semplice da implementare.
  4. Polling breve con un ritardo ragionevole, ad esempio ogni due secondi per eseguire il ping del server. Query database relazionale. Archivia tutte le chat nel database. Lo hanno progettato in modo che se l'utente non fa nulla dopo 20 secondi, riceve un messaggio o interrompiamo il polling. Questo sembra il più semplice da implementare.

Credo che quello che mi chiedo sia il polling breve davvero così male. Sto facendo una startup e non voglio sbagliare investendo tempo con una soluzione che non scalerà bene.

Allo stesso tempo, penso che se ottengo finanziamenti / trazione, allora posso sempre investire in una soluzione più scalabile.

Se non guadagno soldi, però, non voglio investire tempo nell'app.

Qualche idea?

    
posta user2370642 21.03.2018 - 05:21
fonte

1 risposta

-1

Ho utilizzato tutte le opzioni che hai fornito nelle applicazioni che ho sviluppato, quindi penso di poter rispondere.

Polling

Il polling è qualcosa che dovrebbe essere evitato, in quanto richiede un sacco di utilizzo della larghezza di banda sia lato client che lato server. Non vogliamo che la nostra app utilizzi molti dati su dispositivi mobili, vero? Dalla stessa parte mantenere il costo del server minimo è ancora una buona cosa.
Il ritardo nella ricezione dei messaggi è ancora un punto negativo qui. Le persone vogliono la consegna immediata dei messaggi (anche se stanno usando una connessione 2G) in questo decennio. È bello rendere le nostre app pronte per il futuro.

XMPP

XMPP è una delle cose migliori che puoi usare per la chat. Dispone di strofe e strutture integrate per la maggior parte delle cose che puoi fare in un'applicazione di chat. Non è senza alcun problema però. Il ridimensionamento orizzontale è un problema che hai menzionato. Richiede molta personalizzazione. Un altro problema è che la maggior parte dei server XMPP non implementa tutte le specifiche di XMPP che richiede un'ulteriore personalizzazione. Ho trovato troppo difficile lavorare sui server XMPP e quindi evitarlo completamente ora.

WebSockets

Questo è perfetto, se ti senti a tuo agio nel creare il tuo framework per questo. Ci sono librerie come Socket.io per renderlo più semplice, anche se tutte le altre cose devi prenderti cura di te stesso. L'ho provato per la mia app alcuni anni fa, ma la libreria client per Android non era così matura in quel momento.

Firebase

Questo è qualcosa che consiglierei di usare. Questo è ciò che la maggior parte dei principianti sta provando in questi giorni. È possibile utilizzare FCM per la notifica push e per un modo più rapido e affidabile, è possibile utilizzare il database in tempo reale Firebase o Firestore che si sincronizza simultaneamente su più client. FCM è completamente gratuito , sebbene il database abbia alcune limitazioni che puoi rimuovere pagando. Questa è anche una delle opzioni più economiche disponibili.

gRPC

Questo è quello che consiglierei se hai un utilizzo avanzato e hai bisogno di un'app altamente scalabile. Questo è qualcosa di nuovo e ho visto molti sviluppatori di Google consigliarlo ai nostri clienti (siamo un partner di Google Premiere e quindi abbiamo accesso diretto a Google ragazzi ogni qual volta si presenti tale necessità). Non sono del tutto sicuro di come puoi collegarlo ad Android perché non ho lavorato molto su questo, ma questo link può aiutarti.

    
risposta data 21.03.2018 - 07:18
fonte

Leggi altre domande sui tag