11 lines
822 B
JavaScript
11 lines
822 B
JavaScript
|
|
// Swappable pub/sub for cross-instance real-time fan-out. The app delivers to its OWN WebSocket clients
|
||
|
|
// locally (chat.js) exactly as before; this layer only carries a copy to OTHER app instances so a message
|
||
|
|
// POSTed on instance A reaches a recipient whose socket lives on instance B.
|
||
|
|
//
|
||
|
|
// Backend chosen by PUBSUB_BACKEND (default 'memory'). 'memory' = single instance: publish is a no-op and
|
||
|
|
// subscriptions never fire, so behaviour is identical to before this layer existed — zero hot-path cost.
|
||
|
|
// 'redis' fans out via Redis. The interface (publish/subscribe/init) is deliberately tiny so Redis is one
|
||
|
|
// swappable file — a Postgres LISTEN/NOTIFY or NATS backend could drop in the same way. Never hardwired.
|
||
|
|
const name = process.env.PUBSUB_BACKEND || 'memory';
|
||
|
|
module.exports = require('./pubsub/' + name);
|