使用pubnub方法推送更新

时间:2012-11-30 03:13:31

标签: javascript php database pubnub

我想知道PubNub是否可以实现这一点。我希望在我的应用程序中实现使用PHP完成数据库处理的实时通信,并使用JavaScript在HTML页面中显示更新。这是场景:

  1. 通过插入/更新/删除在PHP文件中运行的SQL来更改数据库。
  2. 这个相同的PHP文件调用类似的东西:

    $ pubnub->发布(阵列( 'channel'=> 'my_test_channel', 'message'=> array('database_id'=>'100') ));

  3. 然后,JavaScript浏览器会监听发布给它的任何更新:

    function(message){ if(消息中的'database_id'){     //做更多的事情 } });

  4. 这个方法可以在用户注册并执行上述步骤的情况下工作,然后管理员可以立即收到他的更新 新用户的管理面板,而不必使用数据库触发器,继续或使用ajax轮询?

1 个答案:

答案 0 :(得分:1)

在UPDATE,INSERT和DELETE以及PHP上通过MySQL触发器调用PubNub PUSH消息

有多种方法可以从服务器调用更新到Web App管理界面和移动应用程序。一种简单的方法是在注册发生时只使用PHP API发布,但是使用MySQL触发器可能会更低级别!

MySQL使您可以通过存储过程将编码打包成易于访问的 TRIGGERS 。你可以用Pusher创建类似的东西,虽然我知道如何用PubNub做到这一点;所以这里是PubNub和MySQL的快速指南。简单就是您所寻求的,这是您的解决方案!我将引导您通过一种简单的方法将表上的任何 UPDATE INSERT DELETE 操作绑定到将被调用的存储函数时间,使用PubNub轻松向您的手机和网络应用发送推送通知。

PubNub推送消息

DELIMITER $$
CREATE PROCEDURE push_message
(p1   DOUBLE,
 p2   DOUBLE,
 p3 BIGINT)
BEGIN
 DECLARE cmd CHAR(255);
 DECLARE result CHAR(255);
 SET cmd = CONCAT('curl https://pubsub.pubnub.com/publish/demo/demo/0/mysql_triggers/0/%22',p1, ',' ,p2, ',' ,p3,'%22');
 SET result = sys_eval(cmd);
END$$;

注意:确保您的PROCEDURE类型正确 DOUBLE VARCHAR TEXT

MySQL触发代码INSERT示例

CREATE TRIGGER push_message_trigger AFTER INSERT ON your_table_name_here
FOR EACH ROW
CALL push_message(NEW.Column1, NEW.Column2, NEW.Column3);

注意:请确保在推送消息中包含此处所需的列。

MySQL触发器代码更新示例

CREATE TRIGGER push_message_trigger AFTER UPDATE ON your_table_name_here
FOR EACH ROW
CALL push_message(NEW.Column1, NEW.Column2, NEW.Column3);

通过调试控制台监控推送消息

http://www.pubnub.com/console?sub=demo&pub=demo&channel=mysql_triggers - 您可以通过PubNub Dev Console查看触发器。通过这种方式,您可以了解需要更改哪些参数以及哪些数据对于您可以包含在PubNub websocket以及移动和Web设备上可以接收的每个推送通知中非常重要。

在JavaScript中接收推送消息

<div id=pubnub ssl=on></div>
<script src=//pubnub.a.ssl.fastly.net/pubnub-3.3.1.min.js></script>
<script>(function(){

    PUBNUB.init({
        subscribe_key : 'demo',
        ssl           : true
    }).subscribe({
        channel  : 'mysql_triggers',
        callback : function(mysql_trigger_details) {
            alert(mysql_trigger_details);
        }
    });

})();</script>

现在,您已经完成了通过简单程序直接从MySQL发送和接收更改事件所需的步骤。还有一些方法可以优化此方法,例如向守护进程发出信号,该进程对HTTPS推送通知进行排队和汇集。这应该是非常有效的。