У меня есть таблица "article" в базе данных Postgresql 9.1 и триггер, который уведомляет канал при каждой вставке.
Я хотел бы создать скрипт node.js, который перехватывает эти вставки и отправляет уведомления подключенным клиентам с помощью Socket.io. Пока что я использую модуль node-postgres, чтобы LISTEN каналу, но кажется, что запрос LISTEN останавливается примерно через 10-15 секунд и перестает перехватывать вставки. Я могу запросить новое прослушивание, когда истечет время ожидания, но я не уверен, как правильно реализовать продолжение.
Вот моя процедура уведомления postgresql:
CREATE FUNCTION article_insert_notify() RETURNS trigger AS $$
BEGIN
NOTIFY "article_watcher";
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
Триггер:
CREATE TRIGGER article_insert_trigger
AFTER INSERT ON article
FOR EACH ROW EXECUTE PROCEDURE article_insert_notify();
И код node.js:
var pg = require ('pg'),
pgConnection = "postgres://user:pass@localhost/db"
pg.connect(pgConnection, function(err, client) {
client.query('LISTEN "article_watcher"');
client.on('notification', function(data) {
console.log(data.payload);
});
});
Как я могу обеспечить LISTEN на полный рабочий день или как я могу перехватить эти тайм-ауты для повторного запроса на прослушивание? Или, может быть, модуль, отличный от node-postgres, предлагает для этого более подходящие инструменты?