The world of chat applications has radically changed since the day the internet was invented. You may have just thought to yourself, "no duh." But, considering we're only talking about a 38 year time frame, the amount of innovation and growth is truly impressive. From text-only chat rooms that could accommodate a mere handful of people to multimedia-rich apps like Slack and Discord—everything from the look to the feel and functionality of chatting online has had a facelift.
We're not just talking about surface-level changes.
Under the surface, the driving technology and protocols which allow you to send messages across the globe have completely transformed—becoming more secure, more sophisticated, and more efficient.
Nowadays, if you’re interested in building a chat application you have multiple decisions to make regarding your tech stack. That's where we come in. In this article, we’re taking a deep dive into chat protocols and frameworks—their history, use cases, pros and cons, and much more.
But before we dive into that, let’s take a look at UDP & TCP.
What Are UDP & TCP?
The UDP (User Datagram Protocol) and the TCP (Transmission Control Protocol) are networking communication protocols for transferring data between two devices. You may be wondering why we're covering UDP and TCP connections in an article about chat protocols. Well, all chat protocols are built on either a UDP or a TCP connection. So, it's important to understand the benefits and drawbacks of each protocol.
UDP's biggest benefit is speed. But that speed is achieved by sending packets (units of data) directly to a device without first establishing a connection. This means that UDP doesn't define the order of packets sent or even check to see if they arrived successfully. UDP is often used for time-sensitive data transmissions such as video playback or DNS lookups.
TCP is a slower but more reliable way of transmitting data. Unlike a UDP communication, a TCP requires the two devices to establish a connection before any data transmission takes place. This connection is established through an automated "handshake" process. A TCP connection provides error checking and also guarantees that the data packets will be delivered in the order they were sent. TCP connections are everywhere online. In fact, if you look at your browser address bar you can see the "https://" in front of "cometchat.com". Nearly all https connections use TCP protocol to transmit data—so this sentence you're reading was sent via a TCP connection.
List Of Instant Messaging Protocols
Now that we understand UDP and TCP connections, let's dive into the most popular chat protocols. Below, in our list of instant messaging protocols, we have categorized each protocol under the platform (web, Android, or cross-platform) that it serves. We've also outlined each protocol's features, use cases, pros & cons, and architecture.
Web Chat Protocols
1. WebRTC - Web Real-Time Communication
WebRTC is an open-source, browser-standardized framework that allows you to engage in rich, multimedia communication in real time. Most browser-based voice or video chat platforms require you to download third-party plugins or apps. But WebRTC is built right into most browsers and uses APIs to establish a peer-to-peer connection. Created by Google, WebRTC was released as an open-source project for browser-based real-time communication.
WebRTC defaults to using UDP. However, if there's a firewall between the two devices, WebRTC can also connect with TCP to bypass those firewalls.
WebRTC's biggest use case is for deploying a rich multimedia experience right in the browser, without the need to install or use third-party plugins or services.
The biggest benefit of using WebRTC is having direct and unmediated access to your customers. This is perfect for companies that want true control over their customer communication channels. Another benefit is that the lack of a third party vendor means no rate-limiting, pricing changes, or third-party point of failure risk.
The biggest drawback to implementing WebRTC is that to build your chat product you'll need access to a developer familiar with the technology.
WebRTC is used by many million-user chat applications such as Discord, Google Hangouts, and Facebook Messenger.
Supported by most modern browsers
Uses modern codecs for audio and video which allows for high-quality communication
Large-scale projects will need to implement additional servers to reduce load from browsers—which increases the price of maintenance
WebSocket, one of the most popular communications protocols, provides a low latency, near real-time connection between client and server. Therefore, it's best used in cases in which you need the lowest latency possible such as multiplayer online games, chat applications, real-time updating social streams, etc.
Unlike a traditional HTTP system in which communication can only be initiated from the client, a WebSocket connection is bidirectional. The WebSocket API is supported by all modern browsers and, just like the HTTP protocol, data is transmitted over a TCP port.
WebSocket originated in June 2008 during a series of discussions regarding the implementation of a TCP-based socket API in the HTML5 specification.
Many websites that require real-time updates use WebSocket. Huge chat applications like Slack include WebSocket in their tech stack.
Allows for cross origin communication
A persistent connection reduces data loads being sent back and forth
Can pass through most firewalls without issues
Has a solid origin-based security model
Out of the box, WebSocket doesn't automatically reconnect if the connection is broken
Older browsers don't support WebSocket
3. IRC - Internet Relay Chat
IRC, an open messaging protocol, is a text-based chat system that allows users to transmit messages in real time. Created in 1988 by Jarkko Oikarinen, IRC is one of the oldest chat protocols that allows for more than two users to chat with each other. Its existence even predates the World Wide Web. (Yes, you read that right!)
While IRC has implemented new features to stay relevant over the years, such as encryption, additional commands, proxy detection, etc., IRC usage has been in a sharp decline since 2003.
IRC can be run on a UDP or a TCP port.
The freenode IRC network is one of the most popular IRC clients, reaching 90,000 users during peak hours.
If you read ahead, you're probably dying to know why this section doesn't have pros and cons. No, we didn't forget our own format. It's just that the IRC protocol can only be run on an IRC network and server. So, unless this is your required use case, we'd recommend looking into a different chat server protocol.
Cross-Platform Chat Protocols
4. XMPP: Extensible Messaging and Present Protocol
XMPP is a protocol for transmitting XML data (Extensible Markup Language) over a network. By streamlining the push mechanism between clients, it enables a real-time messaging experience. XMPP focuses on delivering a network of connected devices that are capable of communicating via their own trusted servers.
It's a cross-platform protocol that can be run on the Web, Android, and iOS with the use of the applicable XMPP client. One of XMPP's unique selling points is the large number of open-source and free clients which allow for relatively easy implementation.
Its use cases include instant messaging, multi-party chat, content distribution, and multimedia streaming such as voice and video calls. XMPP is used by many large chat applications such as WhatsApp and Zoom. In fact, even our own Chat API and SDKs implement XMPP.
XMPP was introduced into the world by Jeremie Miller in 1999 with the announcement of Jabber. Google Talk is a great example of what an XMPP client can achieve.
XMPP uses only a TCP connection to transmit data.
Allows for communication between servers with different architecture
Uses TLS and SASL to provide a secure connection
Presence allows reactivity to the status of a user
XML content is transported asynchronously
Server overload is possible due to overhead from text-based communication
5. MQTT - Message Queuing Telemetry Transport
MQTT is a very lightweight messaging protocol. Specifically designed for machine-to-machine telemetry, it's quickly rising in popularity for Internet of Things (IoT) connections. It was originally designed by Andy Standford-Clark at IBM and Arlen Nipper. They created this chat protocol to allow telemetry communication between oil pipelines via satellite.
The most common use case for MQTT is to automate and communicate IoT devices for a smart home. For example, you can send data from a motion sensor to your mobile device which then triggers your garage door to close. Or you can send data from a dusk to dawn sensor to a Raspberry Pi to trigger your front porch lights to turn on.
The MQTT protocol is based on a TCP connection. IBM Watson uses MQTT to allow it to communicate with devices.
Lightweight and efficient—which means it's optimal for small bandwidth environments such as microcontrollers
Messages are encrypted using TLS
Offers support for unreliable networks using persistent sessions
Doesn't support video streaming
Messages are transmitted asynchronously
Can experience issues with latency and speed.
Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions is a presence and instant messaging protocol built on top of the Session Initiation Protocol (SIP). Sounds SIMPLE enough, right? (See what I did there?)
SIP was the thought-child of Mark Handley, Henning Shulzrinne, Eve Schooler and Jonathan Rosenberg in 1996. It distinguishes itself from its counterparts by being developed in the internet community rather than the telecommunications industry. SIP has been standardized and managed by the Internet Engineering Task Force (IETF).
A text-based protocol, SIMPLE is most often used in private IP telephone systems, instant messaging over IP networks, and mobile calls over the LTE network. The SIMPLE protocol can be run on either a UDP or a TCP port.
It is an open standard just like XMPP
Text-based messages make debugging simpler
Can accommodate users with varying capabilities (such as voice but no video)
Text-based messages put a larger load on routers and middleware
No built-in encryption or security
7. AMQP - Advanced Message Queuing Protocol
AMQP, Advanced Message Queuing Protocol, is an open-source, standardized protocol for asynchronous messaging. AMQP shines in multi-client environments due to its use of a streamed binary messaging system which allows for the interoperability of clients from different vendors.
This protocol is secure, multichannel, portable, and very efficient. It offers encryption via SASL or TSL and uses the TCP protocol for data transmission. AMQP works in a very similar manner to the MQTT protocol we discussed earlier.
AMQP was originally created by John O'Hara at JPMorgan Chase. But it quickly became an open effort with firms such as Cisco Systems, Red Hat, and IONA technologies contributing towards a joint collaboration.
Uses QoS to ensure deliverability of data
The binary nature of the protocol allows interoperability
Offers secure connections to users
Requires rather large bandwidth compared to XMPP and MQTT protocols
Not backwards compatible with older versions
Android Chat Protocol
8. RCS - Rich Communication Services
RCS, also known as RCS Chat, stands for Rich Communication Services. It was originally developed as a replacement for text messages (SMS) but adoption has been moving at a slow pace. This protocol allows for transmitting group chats, video, audio, high-resolution image files, read receipts, and real-time viewing via a TCP port.
It looks and acts very much like iMessage does. In fact, it is Google's response to iMessage's popularity. Google's Messages App, which comes preinstalled on many Android devices, is the most common use of the RCS protocol.
Despite being originally designed in 2007, the RCS protocol was, for the most part, idle until 2018. That's when Google's messaging team announced they were working on an RCS implementation for their Messages app.
The goal of RCS is to create a richer, more interactive text messaging experience for users. One of its biggest selling points is that it allows for multiple data types including pictures, videos, PDF files, location data, and even Microsoft Word documents. It can also allow customers to complete entire transactions within the messaging app. With RCS one can easily imagine a future in which you can buy, sell, and transfer digital goods right in your messaging app.
Sender verification reduces spam and phishing attempts
File size limits for SMS in the megabytes, instead of the usual kilobytes, allows for more rich media
Doesn't currently offer end-to-end encryption
Choosing a chat protocol for your application is no easy task. You have to consider what’s compatible with your current tech stack, what resources you have at your disposal, and what’s most important for your use case (speed vs reliability vs interoperability).
After exploring our list of instant messaging protocols, we hope you have a better understanding of what protocol will best fit your use case.
And if you do, your next step is to start building a chat application. Take a look at our Chat API and SDKs which allow you build mobile and web chat applications quickly for every technology. And sign in to our developer dashboard to start building (for free).
If you have any questions, get in touch with us so we can help you build your chat application.
About the Author
Cosette Cressler is a passionate content marketer specializing in SaaS, technology, careers, productivity, entrepreneurship and self-development. She helps grow businesses of all sizes by creating consistent, digestible content that captures attention and drives action.