WebSocket-multiplex is a thin library on top of SockJS that allows you to do multiplexing of many virtual WebSockets connection over a single physical one.


WebSocket-multiplex is a small library on top of SockJS that allows you to do multiplexing over a single SockJS connection.

The rationale for that is explained in details in the following blog post:

  • https://www.rabbitmq.com/blog/2012/02/23/how-to-compose-apps-using-websockets/

On the client side (browser) load library like that:

<script src="http://cdn.sockjs.org/websocket-multiplex.js">

Alternatively, if you're using SSL:

<script src="https://d1fxtkz8shb9d2.cloudfront.net/websocket-multiplex-0.1.js">

Usage example:

    var sockjs_url = '/multiplex';
    var sockjs = new SockJS(sockjs_url);

    var multiplexer = new WebSocketMultiplex(sockjs);
    var ann  = multiplexer.channel('ann');
    var bob  = multiplexer.channel('bob');
    var carl = multiplexer.channel('carl');

On the node.js server side, you can use npm to get the code:

npm install websocket-multiplex

And a simplistic example:

var multiplex_server = require('websocket-multiplex');

// 1. Setup SockJS server
var service = sockjs.createServer();

// 2. Setup multiplexing
var multiplexer = new multiplex_server.MultiplexServer(service);

var ann = multiplexer.registerChannel('ann');
ann.on('connection', function(conn) {
    conn.write('Ann says hi!');
    conn.on('data', function(data) {
        conn.write('Ann nods: ' + data);

// 3. Setup http server
var server = http.createServer();
sockjs_echo.installHandlers(server, {prefix:'/multiplex'});
var app = express.createServer();

For a full-featured example see the /examples directory.