Node.js 使用web套接字从数据库到客户端的实时数据更新/更改
我正在尝试使用web套接字构建一个实时应用程序。目前,我正在使用ajax从客户端拉取(每个固定的间隔)来获取数据库表中的新更改。我不完全了解如何使应用程序实时 当前实施:Node.js 使用web套接字从数据库到客户端的实时数据更新/更改,node.js,websocket,socket.io,mariadb,rethinkdb,Node.js,Websocket,Socket.io,Mariadb,Rethinkdb,我正在尝试使用web套接字构建一个实时应用程序。目前,我正在使用ajax从客户端拉取(每个固定的间隔)来获取数据库表中的新更改。我不完全了解如何使应用程序实时 当前实施: 在我的应用程序中,我通过ajax轮询从数据库(MariaDB)获取数据,并在客户端的表中显示它 预期行为: 没有来自客户端的轮询,只要数据库端有更改,它就应该在所有连接的客户端上更新 在我的搜索过程中,我遇到了一些解决方案,它们是: Node.js+server.io+oracle数据库 重新思考数据库 服务器发送事件 连续查
在我的应用程序中,我通过ajax轮询从数据库(MariaDB)获取数据,并在客户端的表中显示它 预期行为:
没有来自客户端的轮询,只要数据库端有更改,它就应该在所有连接的客户端上更新 在我的搜索过程中,我遇到了一些解决方案,它们是:
甲骨文(+CQN)
Socket.io
- Node.js服务器为通知注册查询
- 在通知更改时,node.js服务器从数据库中提取更改
- 成功检索更改后,node.js服务器使用socket.io将更改发布到所有感兴趣的客户端
socket.on('connection',function()){
log(“刚加入的人”);
});代码>
因此,对于连接我们服务器的每个套接字,都将输出刚加入的人
要进一步扩展此功能,可以添加发射事件,以便:
socket.on('connection',function()){
log(“刚加入的人”);
socket.emit('hello'{
留言:“你好”
}
});
因此,当客户端连接时,将发出此hello事件。我们可以在客户端监听此事件,如下所示:
客户端
socket.on('hello',函数(数据){
console.log(data.message);//您好
});
io能够双向传输数据,因此您还可以从客户端发出事件并在服务器上侦听
您还说过,您将让所有客户端对某个事件做出反应,为此,您将不执行socket.emit,而是执行io.emit。请记住,socket仅向该套接字发出。io向包括发送方在内的所有套接字发出,并且使用socket.broadcast.emit将发送到所有连接的客户端,而不是发送方
如果您愿意使用SQL server,我相信SQL server也有类似的通知服务。请查看我的博客文章,其中包括一些示例应用程序,如果您想了解更多信息:所有组件是否都在同一台服务器(甚至是同一个VM)?@rick James:是的,所有组件都在同一台服务器上。