[![Build Status](]( [![NPM version](](

Downloads in past


69993.2.03 years ago10 years agoMinified + gzip package size for in KB

Build Status NPM version allows you to communicate with Socket.IO servers easily from another Node.js process (server side).
Emitter diagram
The emitter is also available in other programming languages:
  • Java:
  • Python:
  • PHP:
  • Golang:
  • Perl:
  • Rust:

It must be used in conjunction with
The current version is compatible with both:
  • (
  • (

Table of content

- Emitter(client, opts) - Emitter(clientUri, opts) - Emitter(opts) - Emitter#to(room:String):Emitter - Emitter#in(room:String):Emitter - Emitter#of(namespace:String):Emitter

How to use

const io = require('')({ host: '', port: 6379 });
setInterval(() => {
  io.emit('time', new Date);
}, 5000);
// Different constructor options.

//1. Initialize with host:port string
const io = require('')("localhost:6379")
// 2. Initlize with host, port object.
const io = require('')({ host: '', port: 6379 });
// 3. Can use other node_redis compatible client eg; ioredis.

const Redis = require("ioredis");
const redis = new Redis();
const io = require('')(redis);

// Make the emitter works with redis clustered environment.
const Cluster = new Redis.Cluster([
        host: "localhost",
        port: 6379
        host: "localhost",
        port: 6378
const io = require('')(Cluster);


const io = require('')({ host: '', port: 6379 });

// sending to all clients
io.emit('broadcast', /* ... */);

// sending to all clients in 'game' room'game').emit('new-game', /* ... */);

// sending to individual socketid (private message)'private', /* ... */);

const nsp = io.of('/admin');

// sending to all clients in 'admin' namespace
nsp.emit('namespace', /* ... */);

// sending to all clients in 'admin' namespace and in 'notifications' room'notifications').emit('namespace', /* ... */);

Note: acknowledgements are not supported

Error handling

Access the redis to subscribe to its error event:
const emitter = require('')("localhost:6379");

emitter.redis.on('error', (err) => {


Emitter(client, opts)

client is a noderedis compatible client that has been initialized with the return_buffers option set to true. This argument is optional.
The following options are allowed:
  • key: the name of the key to pub/sub events on as prefix (
  • host: host to connect to redis on (localhost)
  • port: port to connect to redis on (6379)
  • socket: unix domain socket to connect to redis on ("/tmp/redis.sock")

Emitter(clientUri, opts)

Same as above, but clientUri is a string of the format host:port to connect to redis to.


If you don't want to supply a redis client object, and want to intiialize one for you, make sure to supply the host and port options.



Specifies a specific room that you want to emit to.


Specifies a specific namespace that you want to emit to.