view mod_websocket.wiki @ 443:aed976928537

mod_s2s_auth_dnssec_srv: Note about merger into DANE module
author Kim Alvefur <zash@zash.se>
date Tue, 25 Mar 2014 11:33:15 +0100
parents ff097d886420
children 8a6190c56c8f
line wrap: on
line source

#summary Simple XMPP-over-websocket support
#labels Stage-Beta

= Introduction =

[http://en.wikipedia.org/wiki/WebSocket WebSockets] is a new protocol for providing web pages with simple two-way communication with a web server.
This module allows browsers to communicate with Prosody via XMPP over !WebSockets.
This usually has less overhead then using [https://prosody.im/doc/modules/mod_bosh BOSH].
Note that the [https://tools.ietf.org/html/draft-ietf-xmpp-websocket XMPP over !WebSocket specification] has not been finalized yet, and is still evolving.

There are many JavaScript XMPP libraries capable of utilizing !WebSockets, among them:
  * [https://github.com/sonnyp/lightstring Lightstring]
  * [https://github.com/strophe/strophejs strophe.js >= 1.1.0]
  * [https://github.com/legastero/stanza.io stanza.io]

= Usage =

Simply add {{{"websocket"}}} to your {{{modules_enabled}}} list, as you would any other module. The repository includes a demo websocket.html file to show connecting to the socket. It doesn't perform any XMPP.

To allow requests that would normally break the Same-Origin policy, the {{{cross_domain_websocket}}} option can be used.
Set it to {{{true}}} to enable cross-domain requests from all websites,
or specify a list like
{{{
cross_domain_websocket = { "http://jabber.org", "http://prosody.im" };
}}}

If encryption is provided by a HTTP proxy Prosody won't be able to see this, and consider the connection insecure (consequently forbidding some authentication mechanisms). In this case Prosody can be told to always consider !WebSocket connections secure by setting
{{{
consider_websocket_secure = true;
}}}

The WebSocket endpoint will be at {{{wss://example.com:5281/xmpp-websocket}} and {{ws://example.com:5280/xmpp-websocket}} by default, see [https://prosody.im/doc/http#path_configuration HTTP path configuration] if you would like to change it.

= Compatibility =
||0.9||Works||
||< 0.9||Not supported||