Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@socket.io/mongo-emitter

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@socket.io/mongo-emitter

The Socket.IO MongoDB emitter, allowing to communicate with a group of Socket.IO servers from another Node.js process

latest
Source
npmnpm
Version
0.2.0
Version published
Weekly downloads
1.5K
-22.19%
Maintainers
1
Weekly downloads
 
Created
Source

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).

Emitter diagram

It must be used in conjunction with @socket.io/mongo-adapter.

Supported features:

Related packages:

Table of contents

Installation

npm install @socket.io/mongo-emitter mongodb

For 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.

License

MIT

Keywords

socket.io

FAQs

Package last updated on 27 Jun 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts