How to develop an Instant Messanging App
Using what tools and what to consider it
App should send message to other users. When messages should pop up after receiving. Social integration.
Things to be considered
Only two things are there:
Front end and back-end
We can develop using simple HTML, CSS and JS or other.
Xmpp: Extensible messanging and presence protocol Used by WhatsApp.
Protocol: Set of tools Presence: Present, busy, away Messaging: Messages Extensible:
MQTT: MQ Telementary Transport
Small footprint in real time
connection establish between one and other.
How MQTT and Xmpp establish connection, then?
Server and database
We need real time server (milli second response). Without any latency.
SQL and NoSQL
Which one is better? NoSQL is better for large data. SQL is more simpler.
If we have unstructured data, then should use NoSQL.
Vertical scaling (SQL): Add more features Horizontal scaling (NoSQL): add more db’s in form of clusters
But we can use clustering in SQL too. Now what?
Is PostGIS or PostGreSQL NoSQL?
OTP (Open Telecom Platform) Erlang: Specially designed for communication. Used in WhatsApp.
OTP includes: Erlang interpreter, Erlang compiler, based on xmpp
Compiler is optionally open-source, language is always open-source.
Ejabberd Server Robust, scalable XMPP server
We can have a complete WhatsApp like application in JS.
There is a clone of WhatsApp using JS as frontend and cloudboost as backend
Ionic can make linux apps?
Another option is Phonegap
Cordova is a base for phonegap and ionic
JS framework used for making messaging applications like collaborative applications.
It can be also used to build realtime apps. Can be used be build Android/ios apps.
Difference between IM and Realtime? We can use realtime in Instant messanging. Realtime is a concept like realtime computing and IM is an applications.
Google Play application: Threema
How IM better/convenient than using emails?
We can have web server, mail server. Why can’t we have our own messanging server?