如何解决具有socket.io和Postgres LISTEN的NodeJS
每当我的postgres db上的某个表被更改时,我都试图让前端监视事件。
Postgres事件完全可以触发,我可以通过Socker.io连接将其中继到,但是我遇到了可靠性问题。我的服务器上出现'c'
错误,并且套接字通常不会发出和捕获事件。我认为这与我连接到Socket / db客户端的方式有关。
pg配置:
'a'
index.js
'b'
我收到某些表更改的通知,但不一致。
解决方法
在任何通知发生之前,您将立即release
使用获取的数据库客户端,并且每次套接字断开连接并尝试运行UNLISTEN
命令时,都会收到错误消息。在释放的客户端上,该客户端的连接在30秒后关闭。
相反,使用
socket.on("disconnect",async () => {
try {
await client.query('UNLISTEN update_table');
} finally {
release();
}
});
顺便说一句,我建议不要为每个socket.io客户端获取一个新的数据库连接,因为该数据库太有价值了。相反,为您的应用程序创建一个客户端(您甚至可能不需要池),让它监听update_table
事件(可能仅在连接套接字时),然后对每个事件broadcast当前连接的套接字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。