有没有更好的方法来监听节点JS中的表更改,而不使用setInterval()函数

我正在学习与Codeigniter Node JS集成。 这个过程正在完善。

我在数据库(MySql)发生某些更改时显示一些实时通知

现在我正在使用setInterval()函数,时间为5秒。 这将每5秒钟调用一次数据库查询。

有没有更好的方式来监听没有setInterval()function的数据库更改?

我的代码示例是

 io.on('connection', function(socket){ setInterval(check_new_notification, 5000); }); socket.on('check_new_notification', function(user,time){ check_new_notification(user,time); }); function check_new_notification(user,time){ if(user == '' || typeof user == 'undefined' || user == null){ user = user_id; } if(time == '' || typeof time == 'undefined'){ time=0; } if(user != '' && typeof user != 'undefined' && user != null){ db.getDetails(user,time,mysql,pool,function(error,result,row_count){ io.emit('trigger_alert',result, row_count); }); } } 

请让我知道是否有更好的方法来听取数据库更改。 任何帮助,可以赞赏。

在你的情况下,没有办法避免积极的投票。 所以你的方法基本上是正确的。

要提高性能,请执行以下操作:

  • 创build一个布尔型字段status的表
  • 如果发生了一些值得注意的事情,请将status设置为true
  • 读取Node.js中的status
  • 如果为true:请select并设置为false
  • 如果错误:什么也不做

确保你的操作是primefaces – >使用事务。

您应该在创build通知的地方实施通知function。 例如,当数据库行被插入时,让应用程序将消息推送到队列中。 您的应用程序可能会订阅队列,并在插入新行时进行更新。 也可以通过消息队列发送完整的通知。