当Mysql数据库更改状态时,使用Push.js推送通知

时间:2017-08-17 16:09:45

标签: javascript php mysql ajax push-notification

目前我有一个带有客户端和管理员端的PHP系统订单,一个客户端根据订单的进度进行订单和管理员更改状态。信息订单存储在MySQL数据库表中。

例如,这是我存储用户帐户,信息订单和状态顺序的表格:

CREATE TABLE order (
idorder INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
user VARCHAR(30) NOT NULL,
content_order VARCHAR(30) NOT NULL,
status VARCHAR(50)
);

当客户订单时,它会以“PENDING”状态注册,在管理页面中我们检查此订单并通过AJAX点击按钮更新状态更改状态为“PROGRESS”,但客户必须刷新页面才能查看更改他的订单,我希望客户在他的网站订单状态发生变化时获得推送通知。

我正在测试Push.js工具,效果很好。像这个例子:

<html>
<body>
<h4>Press button</h4>
<button id="notify">Notify</button>

<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/push.js/1.0.4/push.min.js"></script>
<script>
 $(document).ready(function(){
        if(!Push.Push.Permission.GRANTED){
            Push.Permission.request();
        }
    });

$("#btn_notificar").click(function(){
        //Push.Permission.request();

        Push.create('NOTIFICATION', {
            body: 'My first notification',
            icon: 'icon.png',
            timeout: 8000,               // Timeout before notification closes automatically.
            vibrate: [100, 100, 100],    // An array of vibration pulses for mobile devices.
            onClick: function() {
                window.focus();
                this.close();
            }  
        });

    });
</script>
</body>
</html>

当管理员的状态发生变化时,如何在客户端页面中集成此通知。

我想要一些帮助。

1 个答案:

答案 0 :(得分:0)

这可以通过在用户的浏览器和服务器之间建立套接字连接来实现。

建议流程:

  • 用户下订单。浏览器将订单请求发布到服务器并显示订单详细信息页面。浏览器还与服务器建立套接字连接,该服务器通过其唯一的订单ID侦听新放置订单的状态更改。
  • 管理员用户更改此订单的状态。浏览器将订单请求发布到服务器并更新数据库。服务器将此状态更改发送/广播到正在侦听此订单更改的所有客户端。
  • 用户的浏览器会收到有关状态更改的消息,并通知用户有关更改的信息。