Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

STOMP or XMPP - Over websocket

Tags:

I am working on a project which involves real time chat (messaging, including group chats).

I have worked with websockets before, So I started working on this using spring-websockets and I did some reading about what is the best way to implement it. Then I came across STOMP (as a sub-protocol for websockets)and as there is direct support for STOMP in spring it was bit easy to achieve what I was supposed to do.

But my doubt is as far as my understanding STOMP and XMPP are similar protocols(messaging protocols) but I could not find any questions/blogs where the differences are explained and why somebody would prefer one over another?

It will be really helpful if somebody explains how these two protocols differ?

Thank you.

like image 889
Karthik Avatar asked Jun 29 '15 06:06

Karthik


People also ask

Which is better between XMPP and WebSockets?

If you have major concerns about security, then XMPP is the protocol for you. If you require built-in presence and messaging functionality, XMPP is your best choice. If data transmission speed is a top priority, then WebSocket is the protocol you're looking for.

Does STOMP use WebSocket?

By default, stomp. js will use the Web browser native WebSocket class to create the WebSocket. However it is possible to use other type of WebSockets by using the Stomp.

Does WebSockets use XMPP?

Whereas in the case of WebSocket, you can not use them alone for chat, instead you can use these WebSockets without XMPP, this means that you have to build chat platform of your own with layer protocols that eventually saves time and excess of associated tasks. However, you would have heard about the OSI model.

Does WhatsApp use XMPP or WebSocket?

WhatsApp uses Ejabberd (XMPP) server which facilitates instant message transfer between two or many users on a real-time basis.


1 Answers

As the successor of Jabber, XMPP is more focused on instant messaging instead of STOMP. XMPP is an extensible protocol and could be used for other purposes, but there are plenty of built-in mechanism and implementations regarding IM. STOMP offers a more general mechanism and "message" here refers a broad meaning.

Let's say you choose STOMP for your project. Then you will probably need to define basic messages for certain scenarios (peer-to-peer, group chat) which are already offered by XMPP.

To compare two protocols;

  • STOMP message is carried as plain text (as its name indicates) whereas XMPP is structured as XML.
  • STOMP connections can be established via TCP or WebSockets. XMPP supports TCP or HTTP (WebSocket standard is also propopsed).
  • In Java world, Spring has the ability to talk STOMP and it's very easy to implement. However, XMPP support can be added by adding 3rd Party APIs (i.e. Smack)
like image 88
Efe Kahraman Avatar answered Oct 04 '22 22:10

Efe Kahraman