Self hosted services
How to develop an Instant Messanging App
Using what tools and what to consider it
Features
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.
Channel/Protocol
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
Socket:
connection establish between one and other.
How MQTT and Xmpp establish connection, then?
Backend
Server and database
We need real time server (milli second response). Without any latency.
Database
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?
Tools
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
Socket.io
JS framework used for making messaging applications like collaborative applications.
Meteor
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?