Skip to content
HTTP to XMPP (jabber) bridge.
Perl JavaScript Shell
Branch: master
Clone or download
skx Escape the plain-text messages we send.
We need to escape "<", ">", etc, to avoid sending malformed XMPP
messages to clients that ignore the formatted version.

We do this via a new dependency on
[escape-html]( now.

Closes #1.
Latest commit b49f7d3 Feb 10, 2015

node.js HTTP to Jabber Bridge

This repository contains a simple bridge between HTTP and Jabber.

The node.js server listens for HTTP-POST requests, then submits their contents to a XMPP/Jabber server. Effectively this is a proxy/bridge between HTTP and XMPP.

It is assumed incoming requests will contain two things:

  • The name of a chat-room.
    • The room name will be unqualified. (i.e. "dev" rather than "".)
  • The message to submit.
    • The message may contain HTML-formatting.

When the submission is received it will be posted to the specified chat-room.


I have several systems which usually notify me by email, however dealing with email is a pain. I'd much rather see chat-messages when a backup starts, or finish, for example.

There are several existing command-line tools which will poke messages into Jabber servers, for example sendxmpp, but to use these requires that all the host submitting messages have login details stored locally.

Instead of storing login details, and requiring additional software, using a HTTP-server for submission is simple. The access can be controlled via ACLs, or firewalls, and because HTTP is standard submissions may be made via curl, or your favourite scripting language.


  • Clone the repository: git clone ..

  • Install the dependencies: npm install

  • Edit the config.js file.

  • Start the server: node html2xmpp.js.

  • Submit a message as a test.

    • There are some simple examples in the examples directory.


To submit a message via curl you can do this:

   curl -X POST  \
     -H "Content-Type: application/json" \
     -d '{"room":"lobby","message":"I like cake."}' \

This sample is included in the sample client directory within this repository, as a simple reference.


Included within this repository is a simple tool to poll a bunch of RSS feeds. Each new entry will be posted to a dedicated "feeds" room, if it exists, via a simple HTTP POST to the server.

The example is called rss-announcer.


  • The chat-server and the HTTP bridge/proxy do not need to be running on the same host - providing the bridge machine can talk to the chat server all will be well.
  • The bridge will join a number of conference-rooms when it launches.
    • Messages sent to unknown rooms will be ignored.


You can’t perform that action at this time.