How whatsapp works
How WhatsApp works and how to build a WhatsApp clone?
WhatsApp clones which promise to have
similar functionalities as that of the market giant are either a mere
email messaging systems showcased as a messaging system or doesn’t
use/follow even half of the technical aspects of WhatsApp.
In order to come up with a WhatsApp like
chat application, one should have a detailed understanding of its
functioning mechanism and technicalities.
Server side technicalities deployed in WhatsApp
WhatsApp is a real-time messaging application, which makes use of Ejabberd (XMPP) server. This server facilitates instant message transfer between two or many users at any given second.
ERLANG is
the programming language used by WhatsApp. Ejabberd is an open source
Jabber server written in Erlang language. It was preferred by the
techies of WhatsApp as it was suitable for accommodating huge
communication system with high sustainability.
However, while building a WhatsApp like
app, a lot more efforts were put in like modifications in Ejabberd,
opting for an in-house protocol from XMPP, code restructuring and
incorporating important changes in Erlang. These tweaks contributed
towards achieving optimal server performance.
Erlang also helps by quickly adapting to instant updates and hot fixes.
Whatever may be the improvisations or coding improvements, Erlang helps
in quickly pushing the changes to live implementation without needing
restarts. Thus any changes can be rolled out in quick time and
succession.
1. Insights on data transfer in WhatsApp
WhatsApp
manages over 50 billion message transfers a day. So how these
ever-lasting queues of messages are processed without hiccups? The key
to the smooth data processing lies with the message queue length. The
length of the message queue of all the processes associated with a node
is monitored.
In case of multimedia messages, contents
(audio, video, or image) are uploaded into a HTTP server and are linked
with the content and then sent to the receiving node (receiver) in the
form of a thumbnail. Based on the user’s preference the content can
either be viewed or discarded.
2. Protocol used by WhatsApp
XMPP (Extensible Messaging and Presence Protocol) is being used by WhatsApp. To ensure network security, DSL is being used. This ensures private data transfer.
As and when message is sent, it is queued
on the server. The message waits in the queue until the recipient
reconnects to receive the message. As and when a message is delivered
the sender gets notified by a double check mark near the message. After the delivery the messages are instantly deleted from the server memory.
3. Registration process of WhatsApp
WhatsApp
followed the regular practice of generating a user name and password,
which we commonly do while signing up for a mailing system, based on the
mobile phone’s IMEI number.
Now the practice has been changed. Instead of being dependent on the IMEI number, WhatsApp now asks for the app to send a 5 digit PIN. A message will then be sent to the phone number from WhatsApp. The app on the mobile device requests for a unique key from WhatsApp. This ditches out the dependency of WhatsApp being used on the device.
4. Database management
For the database management Mnesia DB
comes into play. Mnesia is a multiuser distributed DBMS which happens
to be the default DB of ERLANG. Thus by using Mnesia, the app is able to
achieve quicker request responses, thereby improving the overall
efficiency.
FreeBSD
is the operating system upon which WhatsApp is laid upon. Improvising
on the ERLANG based applications and optimizing FreeBSD, WhatsApp is
able to achieve better throughput. For storing multimedia files, the app
uses an exclusive web server YAWS.
Are Whatsapp’s technicalities sounding great?
Technical structure of a WhatsApp-inspired app
Having discussed the
technicalities of WhatsApp it is time to shift gears over analyzing the
possibilities of creating a whatsApp alternative. There are plenty of
messaging applications in the market that appear to be perfect WhatsApp
clones. The reality is many of the attempts of building WhatsApp like
apps are failing because they do not follow the technical aspects.
Well, if we take such apps as an example,
it might be quite difficult to understand as they are completely built
products. Instead a ready made solution that can help in creating a
WhatsApp clone would be a better learning material.
Contus Fly
is a framework that catalyses the build of an instant messaging
application. Contus Fly can be used to develop WhatsApp clone for Android, iOS and Windows
platforms as it has the SDK ready for these widely preferred mobile
operating systems. Since native coding has been used by Contus Fly to
achieve better speed, it can be handy in developing a WhatsApp like
native app.
Ejabberd, the open source Jabber server has been customized by Contus Fly to improve operational efficiency. The XMPP protocol has also been customized to speedup signing in and re-signing in sessions. To protect the app from DDOS attacks and to prevent account spoofing, this mobile chat application has been encrypted with HMAC.
For data storing, Contus Fly makes use of both Mnesia and MySQL.
While Mnesia is used to maintain user login sessions, MySQL contributes
in maintaining the user details, right from account credentials to
other personal data.
Chat logs are a key for instant messaging
applications. In order to save chat history between several nodes,
Contus Fly has deployed Cassandra database. This database offers a good read write speed thus helping users to retrieve chat logs as and when they need.
Multimedia messages including audio, image, video are saved in Amazon S3 bucket.
Registration for the app usage can be done in multiple ways including
mobile number, email, user name password and social login.
As and when a user triggers a message, the app’s SDK sends a request
to the Ejabbered server. In return the server checks for the
availability of the recipient and if available, the delivery request is
sent to the recipients SDK and then delivered. If the recipient is
offline, the data is stored in the Ejabbered as message will be queued
in the server.
Comments
Post a Comment