Converse.js is an open source, webchat client, that runs in the browser and can be integrated into any website.

It's similar to Facebook chat, but also supports multi-user chatrooms.

Converse.js can connect to any accessible XMPP/Jabber server, either from a public provider such as jabber.org, or to one you have set up yourself.

It's possible to enable single-site login, whereby users already authenticated in your website will also automatically be logged in on the chat server, but you will have to pre-authenticate them on your server. You can refer to the documentation for more info.

An add-on product that does exactly this, already exists for the Plone CMS. Hopefully in the future more such add-ons will be created for other platforms.

If you have integrated Converse.js into any other CMS or framework, please let me know and I'll mention it on this page.

## 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 )
- i18n aware

## 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

You can log in with any existing XMPP account. There is also a list of public XMPP providers on xmpp.net.

Note: currently the demo doesn't work in Internet Explorer older than 10. This is due to lacking support for CORS, a standard which enables cross-domain XmlHttpRequests. There are ways around this, but it hasn't been a priority for me to implement them for this demo.

See here for more information.

### 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 some integration work yourself.

## Documentation

The documentation is still a bit sparse and a work in progress. Nevertheless, you can read what's already written here.

## Tests

We use the Jasmine testing framework to write tests. The tests can be run in the browser and can be viewed here.

## Credits and Dependencies

Converse.js depends on a few third party libraries, including:

- JQuery
- strophe.js
- backbone.js
- require.js (optional dependency)

Some images were taken from Plone and the Open Icon Library.

## Licence

Converse.js is released under both the MIT and GPL licenses.

## Contact

You can follow me on Twitter and Identica

My XMPP username is jc@opkode.im.

Send me an email via this contact form.