Any communication solution provider needs a communication protocol. There is a bunch of them at the market and one needs to give a good thought before they understand the way they work and opt for the one most relevant in their particular case. We at QuickBlox chose XMPP protocol once and the time has come to spread a word about it.
XMPP is quite an old technology. Launched under the name Jabber, it was an open-source project for developing a protocol capable of supporting instant messaging solutions. Jabber also became the name of an instant messaging service based on XMPP.
What is the XMPP protocol? If we decipher the abbreviation, we will get extensible messaging and presence protocol, and this is exactly what XMPP is. It is a protocol for a messaging service based on extensible data exchange that can show the user’s “presence” – their ability to send and receive messages.
During two decades of its existence, it has got a reputation of a reliable solution and even earned the trust of such industry leaders like Google and Facebook that used XMPP in their messaging services – Google Talk and Facebook Messenger.
At QuickBlox, we opted for XMPP as it has always been chat-oriented, and chats and instant messaging are the primary focus of our service. XMPP is perfectly suited for real-time messaging including all types of instant communication – private, public or group messaging, video and audio communication, data exchange. Let’s look at XMPP strong suits to see why it became our protocol of choice and you may consider it your choice in 2019.
XMPP uses an open standard published by IETF. Any provider that complies with this standard can implement an instant messaging solution using XMPP. Therefore, XMPP supports a free choice of the IM vendor.
There is no central server that supports communication via XMPP. All communication is processed via servers with no direct connections between clients, but anyone can launch and maintain their own XMPP server. This ensures server independence, increases security, and provides additional customization opportunities.
XMPP is not limiting you in the choice of operating systems or devices on which you run your IM solutions.
Compared to other communication protocols, XMPP wins points in the support category. As one of the oldest protocols, it has one of the most effective support services that, thanks to the contributions by Google and other companies, has evolved into an efficient and reliable function.
As everything, XMPP has its weaknesses of which we are aware of. For the time being, however, we believe that its advantages outweigh its drawbacks, and XMPP remains a working component of our communication solutions.
XMPP transmits lots of redundant data. Sometimes, as much as 60% of data is repeated creating huge amounts of unnecessary traffic.
In XMPP, messaging is done in an XML document with no option to send unmodified binary data. This restriction makes it impossible to send files without using additional communication protocols.
In our communication solutions, we implement a set of the most important features that are necessary for a chat application:
This document defines the basic specifications and standards describing, among others, the security and encryption mechanisms used in XMPP-based instant messaging applications. Particularly, RFC-6120 refers to the TLS 1.2 security protocol that QuickBlox uses in its solutions.
RFC-6121 is another standard that governs the management of rosters (contact lists of the user) and presence information (the user’s status in the context of their ability to participate in the conversation).
XEP-0045 is an XMPP extension for a highly customizable multi-user chat. With XEP-0045, you can enable conversations in chat rooms as well as exercise user management functions. However, XEP-0045 does not support establishing a system of user roles and privileges or changing a role or privilege for a particular user.
XEP-0280 is used to send carbon copies of instant messages to different resources to maintain the uninterrupted conversation flow. This extension allows users to continue conversations from different devices with no messages lost.
The XEP-0016 extension provides the ability to block communication with a particular user based on personal preferences. With XEP-0016, you can block users both in private chats and in group conversations.
XEP-0198 is an XMPP extension that supports the management of data streams. The functionality of XEP-0198 allows resuming the stream after an interruption.
With XEP-0333, you get the ability to set chat message markers, such as “delivered”, “received” or “acknowledged”. This way, users get visual confirmation that their messages have reached their recipients.
XEP-0012 allows providing information about the user’s last activity or presence in the chat. In QuickBlox solutions, the presence of data is shown in seconds.
This extension enables displaying the user’s status. With XEP-0352 implemented, the chat shows whether the particular user is online or not.
The XEP-0060 extension allows implementing the publish-subscribe service. In our case, we may develop the service with Telegram channels.
XEP-0191 is a blocking command extension. It is used to block communications and can be implemented faster and easier than XEP-0016.
Within the functionality of XEP-0191, the following features are also available:
XEP-0033 enables sending messages to multiple recipients simultaneously. On the other hand, it allows sending user presence information to multiple servers at the same time.
We can build integrations with the gateways between the XMPP network and legacy messaging services. Particularly, we can create integrations with proxy gateways that act as an XMPP client on a non-XMPP instant messaging service.
QuickBlox could provide you an option to integrate your email with the XMPP network. This will allow you to receive the messages that were left unread for a while. The messages will be sent to the chat through the Simple Mail Transfer Protocol that is SMTP.
QuickBlox can also ensure you with the message queue integration. A message queue is an integration pattern for the information exchange while being connectionless. The messages you receive will be redirected to your MQ service for further analysis. You’ll also have a dynamic configuration for several message queues.
XMPP is a reliable communication protocol used by numerous companies including Google and Facebook. It’s specifically made for instant messaging and, thus, eventually became our choice.
QuickBlox is ready to provide you with the standard chat features but can also add customizable ones upon request. If you are interested in setting up a multi-functional chat application or need more details about the available QuickBlox SDKs, contact us, and we will be glad to help.