Package Exports
- @socket.io/mongo-emitter
- @socket.io/mongo-emitter/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@socket.io/mongo-emitter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Socket.IO MongoDB emitter
The @socket.io/mongo-emitter package allows you to easily communicate with a group of Socket.IO servers from another Node.js process (server-side).

It must be used in conjunction with @socket.io/mongo-adapter.
Supported features:
Related packages:
- MongoDB adapter: https://github.com/socketio/socket.io-mongo-adapter/
- Redis adapter: https://github.com/socketio/socket.io-redis-adapter/
- Redis emitter: https://github.com/socketio/socket.io-redis-emitter/
- Postgres adapter: https://github.com/socketio/socket.io-postgres-adapter/
- Postgres emitter: https://github.com/socketio/socket.io-postgres-emitter/
Table of contents
Installation
npm install @socket.io/mongo-emitter mongodbFor TypeScript users, you might also need @types/mongodb.
Usage
const { Emitter } = require("@socket.io/mongo-emitter");
const { MongoClient } = require("mongodb");
const DB = "mydb";
const COLLECTION = "socket.io-adapter-events";
const mongoClient = new MongoClient("mongodb://localhost:27017/?replicaSet=rs0", {
useUnifiedTopology: true,
});
const main = async () => {
await mongoClient.connect();
const mongoCollection = mongoClient.db(DB).collection(COLLECTION);
const io = new Emitter(mongoCollection);
setInterval(() => {
io.emit("ping", new Date());
}, 1000);
}
main();API
Emitter(mongoCollection[, nsp])
const io = new Emitter(mongoCollection);The mongoCollection argument is a MongoDB collection object from the mongodb package.
Emitter#to(room:string):BroadcastOperator
Emitter#in(room:string):BroadcastOperator
Specifies a specific room that you want to emit to.
io.to("room1").emit("hello");Emitter#except(room:string):BroadcastOperator
Specifies a specific room that you want to exclude from broadcasting.
io.except("room2").emit("hello");Emitter#of(namespace:string):Emitter
Specifies a specific namespace that you want to emit to.
const customNamespace = io.of("/custom");
customNamespace.emit("hello");Emitter#socketsJoin(rooms:string|string[])
Makes the matching socket instances join the specified rooms:
// make all Socket instances join the "room1" room
io.socketsJoin("room1");
// make all Socket instances of the "admin" namespace in the "room1" room join the "room2" room
io.of("/admin").in("room1").socketsJoin("room2");Emitter#socketsLeave(rooms:string|string[])
Makes the matching socket instances leave the specified rooms:
// make all Socket instances leave the "room1" room
io.socketsLeave("room1");
// make all Socket instances of the "admin" namespace in the "room1" room leave the "room2" room
io.of("/admin").in("room1").socketsLeave("room2");Emitter#disconnectSockets(close:boolean)
Makes the matching socket instances disconnect:
// make all Socket instances disconnect
io.disconnectSockets();
// make all Socket instances of the "admin" namespace in the "room1" room disconnect
io.of("/admin").in("room1").disconnectSockets();
// this also works with a single socket ID
io.of("/admin").in(theSocketId).disconnectSockets();Emitter#serverSideEmit(ev:string[,...args:any[]])
Emits an event that will be received by each Socket.IO server of the cluster.
io.serverSideEmit("ping");Known errors
TypeError: this.mongoCollection.insertOne is not a function
You probably passed a MongoDB client instead of a MongoDB collection to the Emitter constructor.