【问题标题】:Socket.io message after database update数据库更新后的 Socket.io 消息
【发布时间】:2018-09-23 21:26:18
【问题描述】:

当管理员更改数据库中的某些内容时,是否可以向所有用户发送消息(例如使用alert)?

情况:用户浏览汽车优惠并在此过程中管理员更改了少数优惠的价格 --> 用户收到通知。

【问题讨论】:

  • 我不知道你是否可以直接观察数据库的变化,但你可以在每次更新数据库后发出一个 Socket.io 事件并在客户端监听。

标签: javascript mysql node.js socket.io


【解决方案1】:

只需将数据库更新的事件耦合到一个像这样的发射:

后端

io.on('connection', (socket) => {
    console.log('A user connected');

    // handling event from the front-end:
    socket.on('clientEvent', function(data) {
        // Database update happens before this
        socket.emit('databaseUpdate', { description: 'Database is updated'});
     });
});

这样每次数据库更新发生时,都会向前端发送一个新事件给所有连接的用户。您的前端现在可以按如下方式监听它(连接的前端监听来自后端的发出的数据库更新):

前端

var socket = io();
// now we just log the updated data but in this callback you provide your own implementation.
socket.on('databaseUpdate', (data) => console.log(data.description));

希望您在此处找到此答案有用的更多信息

source1

Source2

【讨论】:

  • 感谢您的回复,但对我来说真正的问题是如何监视数据库更改以及如何将其写入“后端”。我知道如何在服务器-客户端之间显示消息。最好的选择是如果管理员在 phpmyadmin 中更新数据库,然后有警报。所以我想我在这里需要某种观察者或者可能有一些脚本? (可选)在不断查询后显示消息也可以...
【解决方案2】:

您可以在每个 db 操作结束时使用 socket.blast()。

因此,如果任何用户正在收听爆破消息,您可以进行 API 调用以获取新记录。

[http://node-machine.org/machinepack-sockets/blast][1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多