node package manager
Painless code sharing. npm Orgs help your team discover, share, and reuse code. Create a free org »



XMPP client for JavaScript.

build status Coverage Status js-standard-style


See for instructions on how to use node-xmpp-client.


npm install node-xmpp-client


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.


  • Node.js and browsers
  • Client authentication with SASL
    • DIGEST-MD5
    • PLAIN
    • X-OAUTH2
    • X-FACEBOOK-PLATFORM (removed by Facebook)
  • Multiple transports
    • TCP
    • BOSH
    • WebSocket
  • _xmpp-client._tcp SRV record support


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-client/bundle.js"></script>
<script type="text/javascript">
    var client = new XMPP.Client(opts);


Rather than send empty packets in order to keep any socket alive please try the following:

this.client.connection.socket.setKeepAlive(true, 10000)

Where this.client is the result of new require('node-xmpp-client')().