Quali tecnologie dovrebbero essere considerate per fare applicazioni di chat come Messenger e WhatsApp?
Costruire un'applicazione di chat come whatsapp, fb messenger, hike, ecc comporta un bel po' di setup ma per avere un'idea nel modo più semplice, leggi qui sotto.
L'intero setup è diviso in 3 blocchi.
- Client facing app
- Messaging Channel
- Server setup/infra per gestire le transazioni di messaggistica su scala
In sintesi la tecnologia coinvolta sarebbe
Client facing app
- App (che comporta tutta l'UI e UX di base, Android/iOS/Windows) [Puoi usare le librerie qui]
- Database per salvare i dati nel dispositivo/lavoro offline [SQLite/Realm]
- Gestire gli stati per il dispositivo (i..e cambiamento di rete, chiamate, ecc) e rispondere agli eventi basati sulla messaggistica [API dipendente e disponibile nel sistema operativo di destinazione]
- Mantenere una connessione con il server (via Sockets, XMPP, MQTT)
- Notifiche push[Firebase Cloud Messaging, Urban Airship, One Signal]
- [optional] Media ( video/picture) and location feature [Google Maps SDK, Android Media Framework API]
Channel
- Choose from Socket, XMPP or MQTT [Could be a mix of them too, depending on use case]
- Make sure of the use case ,
- mqtt is for mobile devices and iot (preferred, refer to Paho Project)
- socket if you have desktop app (preferred)
- xmpp can work in both depending on the scale (GCM uses this)
Server
- Setup an infra that takes care of saving messages as they come/go
- Load balancing on the server to manage scale when the number of connections increase/decrease
- Id management to know which connection to use between two Id, mantenendo la logica di messaggistica
- Impostazione degli argomenti per gestire la consegna dei messaggi e le note push
- Gestione del database
- Gestione degli errori
- Error Handling per essere resilienti ai messaggi persi e agli errori di rete
- [opzionale] impostazione della crittografia end-to-end, per mantenere la privacy degli utenti, se non ..assicurarsi che i dati non siano inviati in chiaro via etere.
Per gestire tutto quanto sopra si deve- Codificare la logica in uno dei linguaggi lato server. Possibili contendenti sarebbero NodeJS, Erlang, ecc.
- Avere un'infrastruttura cloud, possibilmente Google Cloud Platform/AWS/Azure
- Specifiche API basate sul protocollo (MQTT/XMPP/SOckets) usato per la messaggistica
- Database potrebbe essere NoSQL - Mongodb/Aerospike o SQL
- Crittografia End-to-End tramite la tecnologia open source disponibile OpenWhisper Systems
P.S : Questa è una risposta semplice, la roba che va avanti è complessa e comporta un sacco di comprensione di come gestire i messaggi.
Articoli simili
- Quali cose dovrebbero essere considerate quando si sceglie un fornitore di servizi cellulari?
- Perché non ci sono zombie neri in Walking Dead? Ci dovrebbero essere anche più zombie anziani, grassi e giovani, non dovrebbero morire prima?
- Telegram messenger è meglio di WhatsApp messenger?
- Quale app di chat è migliore per le chat di gruppo, Telegram o WhatsApp?