2013-03-28 16:42:49 +01:00
<!DOCTYPE html>
< html >
2013-03-28 17:52:07 +01:00
< head >
2013-03-28 16:42:49 +01:00
< meta charset = 'utf-8' / >
< meta http-equiv = "X-UA-Compatible" content = "chrome=1" / >
2013-04-14 00:03:43 +02:00
< meta name = "description" content = "Converse.js: Open Source Browser-Based Instant Messaging" / >
2013-03-28 16:42:49 +01:00
< link rel = "stylesheet" type = "text/css" media = "screen" href = "stylesheets/stylesheet.css" >
2013-08-09 20:25:21 +02:00
< link rel = "stylesheet" type = "text/css" media = "screen" href = "converse.css" >
2013-08-24 02:16:26 +02:00
< script data-main = "main" src = "components/requirejs/require.js" > < / script >
2013-08-25 23:34:35 +02:00
<!-- <script src="converse.min.js"></script> -->
2013-03-28 16:42:49 +01:00
< title > Converse.js< / title >
2013-03-28 17:52:07 +01:00
< / head >
2013-03-28 16:42:49 +01:00
2013-03-28 17:52:07 +01:00
< body >
2013-03-28 16:42:49 +01:00
<!-- HEADER -->
< div id = "header_wrap" class = "outer" >
2013-05-21 17:05:20 +02:00
< header class = "inner" >
< a id = "forkme_banner" href = "https://github.com/jcbrand/converse.js" > View on GitHub< / a >
< h1 id = "project_title" > < a href = "http://conversejs.org" > Converse.js< / a > < / h1 >
2013-06-02 21:40:05 +02:00
< h2 id = "project_tagline" > An XMPP chat client for your website< / h2 >
2013-05-21 17:05:20 +02:00
< section id = "downloads" >
2013-08-29 23:59:43 +02:00
< a class = "zip_download_link" href = "https://github.com/jcbrand/converse.js/archive/v0.6.2.zip" > Download the latest release as a .zip file< / a >
< a class = "tar_download_link" href = "https://github.com/jcbrand/converse.js/archive/v0.6.2.tar.gz" > Download the latest release as a tar.gz file< / a >
2013-05-21 17:05:20 +02:00
< / section >
< / header >
2013-03-28 16:42:49 +01:00
< / div >
<!-- MAIN CONTENT -->
< div id = "main_content_wrap" class = "outer" >
2013-04-01 18:41:46 +02:00
< section id = "main_content" class = "inner" >
2013-04-25 00:23:59 +02:00
2013-08-05 09:25:29 +02:00
< p > < strong > Converse.js< / strong > is an open source webchat client, that
2013-06-02 22:33:29 +02:00
runs in the browser and can be integrated into any website.< / p >
2013-04-25 00:23:59 +02:00
2013-06-02 22:33:29 +02:00
< p > It's similar to < a href = "https://www.facebook.com/sitetour/chat.php" target = "_blank" > Facebook chat< / a > , but also supports multi-user chatrooms.< / p >
2013-05-17 12:48:32 +02:00
2013-08-15 17:56:28 +02:00
< p > < em > Converse.js< / em > can connect to any accessible < a href = "http://xmpp.org" target = "_blank" > XMPP/Jabber< / a > server, either from a public provider such as < a href = "http://jabber.org" > jabber.org< / a > , or to one you have set up yourself.< / p >
2013-06-02 22:33:29 +02:00
2013-08-28 00:26:52 +02:00
< p > 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,
2013-06-02 22:33:29 +02:00
but you will have to pre-authenticate them on your server. You can refer to the < a href = "/docs/html/index.html" > documentation< / a > for more
info.< / p >
2013-05-17 12:48:32 +02:00
2013-04-01 18:41:46 +02:00
< h2 > Features< / h2 >
< ul >
2013-04-26 14:30:14 +02:00
< li > Single-user chat< / li >
< li > Multi-user chat in chatrooms (< a href = "http://xmpp.org/extensions/xep-0045.html" > XEP 45< / a > )< / li >
< li > vCard support (< a href = "http://xmpp.org/extensions/xep-0054.html" > XEP 54< / a > )< / li >
< li > Service discovery (< a href = "http://xmpp.org/extensions/xep-0030.html" > XEP 30< / a > )< / li >
2013-04-25 00:23:59 +02:00
< li > Contact rosters< / li >
< li > Manually or automically subscribe to other contacts< / li >
2013-04-01 18:41:46 +02:00
< li > Accept or decline contact requests< / li >
2013-04-26 14:30:14 +02:00
< li > Roster item exchange (< a href = "http://xmpp.org/extensions/tmp/xep-0144-1.1.html" > XEP 144< / a > )< / li >
2013-04-21 00:06:18 +02:00
< li > Chat statuses (online, busy, away, offline)< / li >
2013-04-01 18:41:46 +02:00
< li > Custom status messages< / li >
< li > Typing notifications< / li >
< li > Third person messages (/me )< / li >
2013-09-02 12:35:14 +02:00
< li > Translated into multiple languages (af, de, es, fr, it, pt-BR)< / li >
2013-04-01 18:41:46 +02:00
< / ul >
2013-03-28 16:42:49 +01:00
2013-04-12 15:59:08 +02:00
< h2 > Screencasts< / h2 >
< ul >
2013-04-19 00:09:04 +02:00
< li > < a href = "http://opkode.com/media/blog/instant-messaging-for-plone-with-javascript-and-xmpp" target = "_blank" > Screencast 1< / a > :
2013-04-12 15:59:08 +02:00
Integrated into a Plone site via < strong > collective.xmpp.chat< / strong > .
< / li >
2013-04-19 00:09:04 +02:00
< li > < a href = "http://opkode.com/media/blog/2013/04/02/converse.js-xmpp-instant-messaging-with-javascript" target = "_blank" > Screencast 2< / a > :
2013-04-12 15:59:08 +02:00
A static HTML page with < em > Converse.js< / em > . Here we chat to external XMPP accounts on Jabber.org and Gmail.
< / li >
< / ul >
2013-03-28 16:42:49 +01:00
2013-08-28 00:26:52 +02:00
< h2 > Integration into other frameworks< / h2 >
< ul >
< li > < h4 > < a href = "http://plone.org" target = "_blank" > Plone< / a > < / h4 >
< strong > < a href = "http://github.com/collective/collective.xmpp.chat" target = "_blank" > collective.xmpp.chat< / a > < / strong >
is an add-on for Plone that uses < em > Converse.js< / em > .
Together with < a href = "http://github.com/collective/collective.xmpp.core" target = "_blank" > collective.xmpp.core< / a > , it provides for single-signon-support (SSO)
and also enables you to manually or automatically
register your Plone users onto your XMPP server.
< / li >
< li > < h4 > < a href = "http://www.djangoproject.com" target = "_blank" > Django< / a > < / h4 >
< strong > < a href = "https://pypi.python.org/pypi/django-conversejs" target = "_blank" > django-conversejs< / a > < / strong > is an app that makes it easer to integrate < em > Converse.js< / em >
into Django. It adds single-signon-support (SSO) support and a database model to store XMPP credentials.
< / li >
< li > < h4 > < a href = "http://roundcube.net" target = "_blank" > Roundcube< / a > < / h4 >
< strong > < a href = "https://github.com/priyadi/roundcube-converse.js-xmpp-plugin" target = "_blank" > roundcube-converse.js-xmpp-plugin< / a > < / strong >
is a plugin for Roundcube Webmail. It's README states that it's still a work in progress.
< / li >
< / ul >
< p > If you have integrated < em > Converse.js< / em > into any other CMS or framework,
< a href = "http://opkode.com/contact.html" target = "_blank" > please let me know< / a > and I'll mention it on this page.< / p >
2013-04-19 00:09:04 +02:00
< h2 > Demo< / h2 >
2013-06-02 22:33:29 +02:00
< p > You can log in with any existing XMPP account. There is also a list of public XMPP providers on < a href = "http://xmpp.net" target = "_blank" > xmpp.net< / a > .< / p >
< p > < em > < strong > Note:< / strong > currently the demo doesn't work in Internet Explorer older
2013-05-17 12:48:32 +02:00
than 10. This is due to lacking support for < a href = "https://en.wikipedia.org/wiki/Cross-origin_resource_sharing" > CORS< / a > ,
a standard which enables cross-domain XmlHttpRequests. There are ways
2013-08-15 17:56:28 +02:00
around this, but it hasn't been a priority for me to implement them for this demo.
See < a href = "/docs/html/index.html#overcoming-cross-domain-request-restrictions" target = "_blank" > here< / a > for more information.< / p > < / em >
2013-05-17 12:48:32 +02:00
2013-04-25 01:05:34 +02:00
< h3 > Is it secure?< / h3 >
2013-08-28 00:26:52 +02:00
< p >
Yes, as long as you can trust that the Javascript being downloaded is
2013-08-29 15:07:14 +02:00
not being tampered with. This page itself is served by Github and is not < a href = "https://en.wikipedia.org/wiki/Transport_Layer_Security" > TLS/TLS< / a >
encrypted (i.e. served via < a href = "https://en.wikipedia.org/wiki/HTTPS" > HTTPS< / a > ).
2013-08-28 00:26:52 +02:00
I don't know how probable it is that Github served pages could be hacked to
insert malicious Javascript.
< / p >
< p >
2013-08-29 15:07:14 +02:00
Ideally you'd want your site to be served encrypted via HTTPS.
In this case, use with caution. You can of course go
download the source from Github and run this page locally, removing
the attack vector altogether.
2013-08-28 00:26:52 +02:00
< / p >
< p >
2013-08-29 15:07:14 +02:00
< em > Converse.js< / em > itself makes encrypted HTTPS requests to a < em > connection manager< / em > , which will make an
SSL/TLS encrypted connection to an XMPP server (if the server supports it).
2013-08-28 00:26:52 +02:00
< / p >
< p >
2013-08-29 15:07:14 +02:00
Logging in happens via < a href = "https://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer" > SASL< / a > .
< / p >
< p >
That said, the developers don't assume any liability for any loss or damages as a result of using this software or demo. Use at your own risk.
2013-08-28 00:26:52 +02:00
< / p >
2013-04-25 01:05:34 +02:00
< h3 > Session support< / h3 >
2013-04-25 00:23:59 +02:00
< p >
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.
< / p >
2013-06-02 22:33:29 +02:00
< p > < em > Converse.js< / em > already supports this usecase, but you'll have to do some integration work yourself.< / p >
2013-04-25 01:05:34 +02:00
2013-05-17 12:48:32 +02:00
< h2 > Documentation< / h2 >
< p >
2013-08-13 11:29:56 +02:00
The documentation is included in the source download under the < em > docs< / em >
folder, or < a href = "/docs/html/index.html" target = "_blank" > can be read online< / a > .
2013-05-17 12:48:32 +02:00
< / p >
2013-04-19 00:39:40 +02:00
< h2 > Tests< / h2 >
2013-05-09 22:27:03 +02:00
< p >
2013-08-05 09:38:34 +02:00
We use the < a href = "http://pivotal.github.io/jasmine" target = "_blank" > Jasmine< / a > testing framework to write tests.
Tests can be run in the browser (just open tests.html) or in the
commandline via ``grunt test``.
2013-05-09 22:27:03 +02:00
< / p >
2013-04-19 00:39:40 +02:00
2013-05-09 22:27:03 +02:00
< h2 > Credits and Dependencies< / h2 >
2013-08-15 17:56:28 +02:00
< p > < strong > Converse.js< / strong > depends on a few third party libraries, including:< / p >
2013-04-01 18:41:46 +02:00
< ul >
2013-05-31 12:04:31 +02:00
< li > < a href = "http://jquery.com" target = "_blank" > JQuery< / a > < / li >
2013-04-19 00:09:04 +02:00
< li > < a href = "http://strophe.im/strophejs" target = "_blank" > strophe.js< / a > < / li >
2013-04-19 17:12:35 +02:00
< li > < a href = "http://backbonejs.org" target = "_blank" > backbone.js< / a > < / li >
2013-05-31 12:04:31 +02:00
< li > < a href = "http://requirejs.org" target = "_blank" > require.js< / a > (optional dependency)< / li >
2013-04-01 18:41:46 +02:00
< / ul >
2013-03-28 16:42:49 +01:00
2013-04-01 18:41:46 +02:00
< h2 > Licence< / h2 >
2013-04-19 00:09:04 +02:00
< p > < strong > Converse.js< / strong > is released under both the < a href = "http://opensource.org/licenses/mit-license.php" target = "_blank" > MIT< / a >
2013-04-19 22:20:59 +02:00
and < a href = "http://opensource.org/licenses/GPL-2.0" target = "_blank" > GPL< / a > licenses.< / p >
2013-05-31 12:04:31 +02:00
< h2 > Contact< / h2 >
2013-08-28 00:26:52 +02:00
< p > You can follow me on < strong > < a href = "http://twitter.com/jcopkode" target = "_blank" > Twitter< / a > < / strong > < / p >
2013-05-31 12:04:31 +02:00
< p > My XMPP username is < strong > jc@opkode.im< / strong > .< / p >
2013-07-27 01:19:32 +02:00
< p > Send me an email via this < a href = "http://opkode.com/contact" target = "_blank" > contact form< / a > .< / p >
2013-04-18 23:05:25 +02:00
< / section >
< / div >
<!-- FOOTER -->
< div id = "footer_wrap" class = "outer" >
< footer class = "inner" >
2013-04-19 22:20:59 +02:00
< p class = "copyright" > Converse.js created by < a href = "http://opkode.com" target = "_blank" > jcbrand< / a > < / p >
2013-04-18 23:05:25 +02:00
< / footer >
< / div >
2013-03-28 16:42:49 +01:00
2013-04-18 23:05:25 +02:00
< div id = "chatpanel" >
< div id = "collective-xmpp-chat-data" > < / div >
< div id = "toggle-controlbox" >
2013-04-19 00:09:04 +02:00
< a href = "#" class = "chat toggle-online-users" >
2013-06-02 21:40:05 +02:00
< strong class = "conn-feedback" > Toggle chat< / strong > < strong style = "display: none" id = "online-count" > (0)< / strong >
2013-04-18 23:05:25 +02:00
< / a >
2013-03-28 16:42:49 +01:00
< / div >
2013-04-18 23:05:25 +02:00
< / div >
2013-04-01 23:44:49 +02:00
2013-04-20 11:32:54 +02:00
< script type = "text/javascript" >
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
< / script >
< script type = "text/javascript" > try { var pageTracker = _gat . _getTracker ( "UA-2128260-8" ) ; pageTracker . _trackPageview ( ) ; } catch ( err ) { } < / script >
< / body >
2013-07-24 23:58:04 +02:00
< script >
2013-07-27 01:19:32 +02:00
require(['converse'], function (converse) {
2013-07-24 23:58:04 +02:00
converse.initialize({
auto_list_rooms: false,
auto_subscribe: false,
bosh_service_url: 'https://bind.opkode.im', // Please use this connection manager only for testing purposes
hide_muc_server: false,
2013-09-02 12:35:14 +02:00
i18n: locales['en'], // Refer to ./locale/locales.js to see which locales are supported
2013-07-24 23:58:04 +02:00
prebind: false,
show_controlbox_by_default: true,
2013-08-15 20:43:39 +02:00
xhr_user_search: false,
2013-08-26 16:21:32 +02:00
debug: true
2013-07-24 23:58:04 +02:00
});
});
< / script >
2013-03-28 16:42:49 +01:00
< / html >