【发布时间】:2018-09-23 21:26:18
【问题描述】:
当管理员更改数据库中的某些内容时,是否可以向所有用户发送消息(例如使用alert)?
情况:用户浏览汽车优惠并在此过程中管理员更改了少数优惠的价格 --> 用户收到通知。
【问题讨论】:
-
我不知道你是否可以直接观察数据库的变化,但你可以在每次更新数据库后发出一个 Socket.io 事件并在客户端监听。
标签: javascript mysql node.js socket.io
当管理员更改数据库中的某些内容时,是否可以向所有用户发送消息(例如使用alert)?
情况:用户浏览汽车优惠并在此过程中管理员更改了少数优惠的价格 --> 用户收到通知。
【问题讨论】:
标签: javascript mysql node.js socket.io
只需将数据库更新的事件耦合到一个像这样的发射:
后端
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));
希望您在此处找到此答案有用的更多信息
【讨论】:
您可以在每个 db 操作结束时使用 socket.blast()。
因此,如果任何用户正在收听爆破消息,您可以进行 API 调用以获取新记录。
【讨论】: