node-xmppclient-bosh
v1.0.16
Published
XMPP client written in nodejs, based on node-xmpp-client, with BOSH mode fixes
Downloads
16
Readme
node-xmppclient-bosh
This is a fork of the node-xmpp-client - idiomatic XMPP client library for node.js It includes fixes to the BOSH mode, tested with ejabberd Most of this readme is copied from the original, but there is a note on an API documentation error (see below).
Now usable in browsers too thanks to Browserify. To create a bundle run grunt browserify
.
Manual
This fork is API compatible with the original, so, except for the IMPORTANT note below, you should refer to the original manual at http://node-xmpp.github.io/doc/nodexmppclient.html.
IMPORTANT NOTE
There is an ERROR in the original manual (probably it's just outdated): The bosh url parameter in the options is not named boshURL. Instead, you should provide an object named 'bosh' with an 'url' property set to the BOSH url.
Installation
Note: We now only support nodejs versions 0.8.0 and greater.
With package manager npm:
npm install node-xmpp-client
Testing
Install the dev dependencies, then...
npm test
To run the tests and the code style checks then use:
grunt test
Also see the tests run in travis. The tests in travis run both the code and code style tests.
How to use
Please see the various examples.
Features
- Client authentication with SASL DIGEST-MD5, PLAIN, ANONYMOUS, X-FACEBOOK-PLATFORM
_xmpp-client._tcp
SRV record support- Even runs in the Browser.
Dependencies
- node-xmpp-core:
node-xmpp
core libraries
Optional
- node-stringprep: for icu-based string normalization.
Automatically building the optional library can be turned off by npm config set optional false
or by setting the environmental variable export NPM_CONFIG_OPTIONAL=false
. On Heroku this is done through heroku config:set NPM_CONFIG_OPTIONAL=false
, for example.
Building XML Elements
Strophe.js' XML Builder is very convenient for producing XMPP
stanzas. ltx includes it in a much more primitive way: the
c()
, cnode()
and t()
methods can be called on any Element
object, returning the new child element.
This can be confusing: in the end, you will hold the last-added child
until you use up()
, a getter for the parent. Connection.send()
first invokes tree()
to retrieve the uppermost parent, the XMPP
stanza, before sending it out the wire.
Browser Support
node-xmpp-client
now comes with a prebuilt browser bundle:
<script src="/node_modules/node-xmpp/node-xmpp-browser.js"></script>
<script type="text/javascript">
var client = new XMPP.Client(opts);
</script>
Keepalives
Rather than send empty packets in order to keep any socket alive please try the following:
this.client.connection.socket.setTimeout(0)
this.client.connection.socket.setKeepAlive(true, 10000)
Where this.client
is the result of new require('node-xmpp-client')()
.