QNA > Q > Quali Tecnologie Dovrebbero Essere Considerate Per Fare Applicazioni Di Chat Come Messenger E Whatsapp?

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.

  1. Client facing app
  2. Messaging Channel
  3. Server setup/infra per gestire le transazioni di messaggistica su scala

In sintesi la tecnologia coinvolta sarebbe

Client facing app

  1. App (che comporta tutta l'UI e UX di base, Android/iOS/Windows) [Puoi usare le librerie qui]
  2. Database per salvare i dati nel dispositivo/lavoro offline [SQLite/Realm]
  3. 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]
  4. Mantenere una connessione con il server (via Sockets, XMPP, MQTT)
  5. Notifiche push[Firebase Cloud Messaging, Urban Airship, One Signal]
  6. [optional] Media ( video/picture) and location feature [Google Maps SDK, Android Media Framework API]

Channel

  1. Choose from Socket, XMPP or MQTT [Could be a mix of them too, depending on use case]
  2. Make sure of the use case ,
    1. mqtt is for mobile devices and iot (preferred, refer to Paho Project)
    2. socket if you have desktop app (preferred)
    3. xmpp can work in both depending on the scale (GCM uses this)

Server

  1. Setup an infra that takes care of saving messages as they come/go
  2. Load balancing on the server to manage scale when the number of connections increase/decrease
  3. Id management to know which connection to use between two Id, mantenendo la logica di messaggistica
  4. Impostazione degli argomenti per gestire la consegna dei messaggi e le note push
  5. Gestione del database
  6. Gestione degli errori
  7. Error Handling per essere resilienti ai messaggi persi e agli errori di rete
  8. [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
    1. Codificare la logica in uno dei linguaggi lato server. Possibili contendenti sarebbero NodeJS, Erlang, ecc.
    2. Avere un'infrastruttura cloud, possibilmente Google Cloud Platform/AWS/Azure
    3. Specifiche API basate sul protocollo (MQTT/XMPP/SOckets) usato per la messaggistica
    4. Database potrebbe essere NoSQL - Mongodb/Aerospike o SQL
    5. 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.

Di Ahrendt

Cosa significa OP nelle chat? :: Come dire quale generazione Ryzen è un Ryzen
Link utili