在表中插入新的mysql记录时创建Node.js事件侦听器(对于通知源)

时间:2012-10-12 22:04:25

标签: mysql codeigniter node.js notifications socket.io

我正在Codeigniter中编写一个需要具有实时功能的PHP Web应用程序。具体来说,我正在开发的两个实时功能是实时聊天,以及实时通知提要。

我能够使用Node.JS和Socket.io为网站(客户端到客户端)创建实时聊天,但我正在努力研究如何创建由节点驱动的通知系统(数据库到客户)。

主要问题:

  1. 当新记录插入MySQL数据库时,有没有办法让节点事件监听?

  2. Node.js可以执行长轮询以检查数据库是否有新记录吗?如果是这样,使用Node.js进行长轮询会比更传统的轮询方法更有效吗?

  3. 提前非常感谢你。任何例子都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

1 - 这取决于您的数据库和您使用的语言/技术。 您可以使用MongoDB和node.js本身在db中插入记录。

但我假设你使用mysql和php,所以你需要某种触发标志或...来通知node.js。

我关于你的应用程序及其工作方式的信息非常少,但我所做的是,我使用ajax在数据库中插入记录,然后我通知node.js

function new_record()
{
     $.post('<?php echo base_url(); ?>/record/add_newrecord' , {data:data} , function(res){

        if($.trim(res) == 'ok' )
        {
            if (typeof io !== 'undefined') 
            {
                  var socket = io.connect('http://localhost:6666');
                  socket.emit('new_record_ADDED' , { data : data });
            }
        }
}

或者您可以在插入记录后直接在php脚本中执行此部分

        if (typeof io !== 'undefined') 
        {
              var socket = io.connect('http://localhost:6666');
              socket.emit('new_record_ADDED' , { data : data });
        }

2 - 可能没有!