The Socket.IO Postgres emitter, allowing to communicate with a group of Socket.IO servers from another Node.js process
npm install @socket.io/postgres-emitterThe @socket.io/postgres-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/postgres-adapter.
Supported features:
- broadcasting
- utility methods
- socketsJoin
- socketsLeave
- disconnectSockets
- serverSideEmit
Related packages:
- Postgres adapter: https://github.com/socketio/socket.io-postgres-adapter/
- Redis adapter: https://github.com/socketio/socket.io-redis-adapter/
- Redis emitter: https://github.com/socketio/socket.io-redis-emitter/
- MongoDB adapter: https://github.com/socketio/socket.io-mongo-adapter/
- MongoDB emitter: https://github.com/socketio/socket.io-mongo-emitter/
Table of contents
- Installation
- Usage
- API
- Known errors
- License
```
npm install @socket.io/postgres-emitter pg
For TypeScript users, you might also need @types/pg.
`js
const { Emitter } = require("@socket.io/postgres-emitter");
const { Pool } = require("pg");
const pool = new Pool({
user: "postgres",
host: "localhost",
database: "postgres",
password: "changeit",
port: 5432,
});
const io = new Emitter(pool);
setInterval(() => {
io.emit("ping", new Date());
}, 1000);
`
`js`
const io = new Emitter(pool);
The pool argument is a Pool object from the pg package.
Specifies a specific room that you want to emit to.
`js`
io.to("room1").emit("hello");
Specifies a specific room that you want to exclude from broadcasting.
`js`
io.except("room2").emit("hello");
Specifies a specific namespace that you want to emit to.
`js
const customNamespace = io.of("/custom");
customNamespace.emit("hello");
`
Makes the matching socket instances join the specified rooms:
`js
// 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");
`
Makes the matching socket instances leave the specified rooms:
`js
// 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");
`
Makes the matching socket instances disconnect:
`js
// 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();
`
Emits an event that will be received by each Socket.IO server of the cluster.
`js``
io.serverSideEmit("ping");