view mod_websocket.wiki @ 471:5fbe553241a8

Created wiki page through web user interface.
author MWild1@gmail.com
date Sun, 27 Jul 2014 14:22:08 +0000
parents 8a6190c56c8f
children
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]

= Installation =

Installation is the same as any other module. Note that you will need a Lua bit library installed, for example [http://bitop.luajit.org/ LuaBitOp] (`lua-bitop` package in Debian/Ubuntu and `luabitop` in LuaRocks).

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