Converse.js is an open source, web based, XMPP/Jabber chat client, similar to Facebook chat, except for the added support of multi-user chatrooms.
It is a Javascript application that you can include in your website, thereby providing it with instant messaging functionality.
You will however need access to an XMPP/Jabber server.
You can connect to any public, federated XMPP server, or you could set one up yourself, thereby maintaining stricter control of the user data (XMPP servers usually don't archive chat messages).
Features
- Single-user chat
- Multi-user chat in chatrooms (XEP 45)
- vCard support (XEP 54)
- Service discovery (XEP 30)
- Contact rosters
- Manually or automically subscribe to other contacts
- Accept or decline contact requests
- Roster item exchange (XEP 144)
- Chat statuses (online, busy, away, offline)
- Custom status messages
- Typing notifications
- Third person messages (/me )
- Chatroom Topics
CMS Integration
Converse.js is available as an add-on for the Plone CMS, called collective.xmpp.chat.
If you have integrated Converse.js into any other CMS or framework, please let me know and I'll mention it on this page.
Screencasts
- Screencast 1: Integrated into a Plone site via collective.xmpp.chat.
- Screencast 2: A static HTML page with Converse.js. Here we chat to external XMPP accounts on Jabber.org and Gmail.
Demo
Click this link or click the link on the bottom right corner of this page.
You can log in with any existing federated Jabber/XMPP account, or create a new one at any of these providers:
Is it secure?
Yes. In this demo Converse.js makes an SSL encrypted connection to a secure connection manager. The connection manager then uses SSL and TLS to connect to an XMPP server.
That said, the developers don't assume any liability for any loss or damages as a result of using this software or demo. Use this demo at your own risk.Session support
The chat client will disconnect whenever you reload the page. If you want the user's session to persist across page reloads, you can establish an authenticated connection on the server side and then attach to this connection in your browser.
Converse.js already supports this usecase, but you'll have to do more manual work yourself.
Tests
We use the Jasmine testing framework to write tests. The tests can be run in the browser and can be viewed here.Dependencies
Converse.js depends on a few third party libraries, including:
Licence
Converse.js is released under both the MIT and GPL licenses.