Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

The Socket.IO Postgres adapter, allowing to broadcast events between several Socket.IO servers

License

NotificationsYou must be signed in to change notification settings

socketio/socket.io-postgres-adapter

Repository files navigation

The@socket.io/postgres-adapter package allows broadcasting packets between multiple Socket.IO servers.

Diagram of Socket.IO packets forwarded through PostgreSQL

Table of contents

Supported features

Featuresocket.io versionSupport
Socket management4.0.0✅ YES (since version0.1.0)
Inter-server communication4.1.0✅ YES (since version0.1.0)
Broadcast with acknowledgements4.5.0✅ YES (since version0.3.0)
Connection state recovery4.6.0❌ NO

Installation

npm install @socket.io/postgres-adapter

Usage

Standalone

import{Server}from"socket.io";import{createAdapter}from"@socket.io/postgres-adapter";importpgfrom"pg";constio=newServer();constpool=newpg.Pool({user:"postgres",host:"localhost",database:"postgres",password:"changeit",port:5432,});pool.query(`  CREATE TABLE IF NOT EXISTS socket_io_attachments (      id          bigserial UNIQUE,      created_at  timestamptz DEFAULT NOW(),      payload     bytea  );`);pool.on("error",(err)=>{console.error("Postgres error",err);});io.adapter(createAdapter(pool));io.listen(3000);

With Node.js cluster

importclusterfrom"node:cluster";import{createServer}from"node:http";import{availableParallelism}from"node:os";import{Server}from"socket.io";import{setupPrimary}from"@socket.io/postgres-adapter"import{createAdapter}from"@socket.io/cluster-adapter";importpgfrom"pg";if(cluster.isPrimary){constpool=newpg.Pool({user:"postgres",password:"changeit",});awaitpool.query(`    CREATE TABLE IF NOT EXISTS socket_io_attachments (        id          bigserial UNIQUE,        created_at  timestamptz DEFAULT NOW(),        payload     bytea    );  `);setupPrimary(pool);for(leti=0;i<availableParallelism();i++){cluster.fork();}}else{constio=newServer({adapter:createAdapter(),});io.on("connection",(socket)=>{/* ... */});io.listen(3000);}

Options

NameDescriptionDefault value
channelPrefixThe prefix of the notification channel.socket.io
tableNameThe name of the table for payloads over the 8000 bytes limit or containing binary data.socket_io_attachments
payloadThresholdThe threshold for the payload size in bytes (seehttps://www.postgresql.org/docs/current/sql-notify.html).8_000
cleanupIntervalNumber of ms between two cleanup queries.30_000
heartbeatIntervalThe number of ms between two heartbeats.5_000
heartbeatTimeoutThe number of ms without heartbeat before we consider a node down.10_000

License

MIT

About

The Socket.IO Postgres adapter, allowing to broadcast events between several Socket.IO servers

Topics

Resources

License

Stars

Watchers

Forks

Contributors4

  •  
  •  
  •  
  •  

[8]ページ先頭

©2009-2025 Movatter.jp