[](https://github.com/socketio/socket.io-emitter/actions) [](http://badge.fury.io/js/socket.io-emitter)
npm install socket.io-emitter

socket.io-emitter allows you to communicate with Socket.IO servers
easily from another Node.js process (server side).
The emitter is also available in other programming languages:
- Java: https://github.com/sunsus/socket.io-java-emitter
- Python: https://pypi.org/project/socket.io-emitter/
- PHP: https://github.com/rase-/socket.io-php-emitter
- Golang: https://github.com/yosuke-furukawa/socket.io-go-emitter
- Perl: https://metacpan.org/pod/SocketIO::Emitter
- Rust: https://github.com/epli2/socketio-rust-emitter
It must be used in conjunction with socket.io-redis.
The current version is compatible with both:
- socket.io-redis@5 (socket.io@2)
- socket.io-redis@6 (socket.io@3)
- How to use
- Examples
- Error handling
- API
- [Emitter(client[, opts])](#emitterclient-opts)
- [Emitter(clientUri[, opts])](#emitterclienturi-opts)
- Emitter(opts)
- Emitter#to(room:String):Emitter
- Emitter#in(room:String):Emitter
- Emitter#of(namespace:String):Emitter
- License
``js`
const io = require('socket.io-emitter')({ host: '127.0.0.1', port: 6379 });
setInterval(() => {
io.emit('time', new Date);
}, 5000);`js
// Different constructor options.
//1. Initialize with host:port string
const io = require('socket.io-emitter')("localhost:6379")
// 2. Initlize with host, port object.
const io = require('socket.io-emitter')({ host: '127.0.0.1', port: 6379 });
// 3. Can use other node_redis compatible client eg; ioredis.
const Redis = require("ioredis");
const redis = new Redis();
const io = require('socket.io-emitter')(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('socket.io-emitter')(Cluster);
`
`js
const io = require('socket.io-emitter')({ host: '127.0.0.1', port: 6379 });
// sending to all clients
io.emit('broadcast', / ... /);
// sending to all clients in 'game' room
io.to('game').emit('new-game', / ... /);
// sending to individual socketid (private message)
io.to(socketId).emit('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
nsp.to('notifications').emit('namespace', / ... /);
`
Note: acknowledgements are not supported
Access the redis to subscribe to its error event:
`js
const emitter = require('socket.io-emitter')("localhost:6379");
emitter.redis.on('error', (err) => {
console.log(err);
});
`
client is a node_redisreturn_buffers
compatible client that has been initialized with the true
option set to . This argument is optional.
The following options are allowed:
- key: the name of the key to pub/sub events on as prefix (socket.io)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")
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
socket.io-emitter to intiialize one for you, make sure to supply thehost and port options.
Specifies a specific room` that you want to emit to.
Specifies a specific namespace that you want to emit to.
MIT