const { pool } = require('../lib/db/connection'); var client; const channels = {}; async function notify (data) { if (data.channel in channels) { data._received = new Date(); for (const listener of channels[data.channel]) { listener(data); } } } async function listen (addChannels, callback) { if (!client) { client = await pool.connect(); client.on('notification', notify); console.log("Client connected"); } if (!Array.isArray(addChannels)) { addChannels = [addChannels]; } for (const channel of addChannels) { if (!(channel in channels)) { await client.query("LISTEN "+channel); channels[channel] = new Set(); console.log("Listening to ", channel); } channels[channel].add(callback); } } module.exports = { listen }