Enables sending and receiving "direct" text messages, that is, from one contact to another, in real time.
Allow “group” conversations between contacts, where one contact sends a message to a group of participants at the same time.
Monitor the “presence” status of contacts, i.e. determine their online or offline status in real time.
It supports binary file transmission, such as images, videos, documents, geographic locations, etc.
Support for metadata exchange with flexible and evolving schemas (e.g. carousels and galleries).
Stores the history of exchanged messages.
In this context, the MQTT protocol proves to be particularly effective in implementing messaging functionality, intrinsically covering points 2, 3, 4, 5 and 6 listed above. This effectiveness italy phone number list motivated Tiledesk's choice to adopt MQTT for its open source instant messaging engine, called chat21 .
On the contrary, although considered, other protocols such as XMPP have not been considered due to their complex nature. XMPP, which is based on the XML protocol, has some significant limitations, such as:
The verbosity of the XML language , which tends to increase the volume of data transferred without adding relevant information, thus consuming precious bandwidth resources.
Computationally heavy analysis , which can be a limiting factor on resource-constrained devices.
Difficulties in the evolution of the XMPP standard , which hinders easy adaptation to the specific needs of rapidly evolving Tiledesk needs.
These factors led to choosing MQTT over other protocols, as it was considered more suitable to meet the needs of a modern messaging system.
Adopting MQTT as the underlying protocol for Tiledesk messaging infrastructure also offers benefits such as reduced communication overhead and easier onboarding of new customers into the established communication ecosystem.
Considering that most of the Tiledesk client applications are designed to run in the browser (e.g. Web Widget or Agent Chat Application ), we used MQTT.js library for implementing the MQTT protocol. We found the MQTT.js library actively maintained, versatile and compatible with various runtime environments, both server-side (with NodeJS) and client-side with web applications running directly in the browser.