Anyone asking this question should usually start with the XMPP library that implements everything they need.
He still deserves an answer though!
XMPP stands for Efficient Messaging and Presence Protocol. The expandable part is important. XMPP is based on XML, a data format that supports a concept known as namespacing .
Through the namespace, you can add bits to XMPP that are not defined in the original specifications . This is important because the XMPP specification intentionally describes only a set of basic things, such as:
- How a client connects to a server
- Encryption (SSL / TLS)
- Authentication
- How servers can communicate with each other to send messages
... and several other basic blocks.
Once you have implemented this material, you have an XMPP client and can send any data that you like! But this is also a problem.
For example, you might decide to include formatting in a message ( bold , italics, etc.) that is not defined in the basic XMPP specification. Well, you can do a way to do this, but if everyone else doesn't do it the way you do, no other software can interpret it (they just ignore namespaces that they don't understand).
Thus, the XMPP Standards Foundation (XSF) publishes a number of additional documents known as the XMPP Enhancement Offers (XEP). In general, each XEP describes a specific activity (from message formatting, file transfer, multi-user chats, and many others), and they provide a standard format for everyone who will use for this action.
You mentioned Strophe.js . This is a "low level" library that expects you to implement the extensions you need. I donβt think that most of them are complicated, but you will have to spend some time studying if you are not familiar with bidirectional protocols, basic concepts of XML / DOM, etc. Strophe.js has written a good book that can also serve as an introduction to XMPP web development, Professional XMPP Programming with Javascript and jQuery .
This issue is also discussed in detail in XMPP: the final guide , which also provides an extensive overview of the core protocol and common extensions.
For further reading on the XMPP Internet, this StackOverflow question may provide some pointers: "Good XMPP Guides?" .
Hope this helps!