Node.js 使用web套接字从数据库到客户端的实时数据更新/更改

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数据库 重新思考数据库 服务器发送事件 连续查

我正在尝试使用web套接字构建一个实时应用程序。目前,我正在使用ajax从客户端拉取(每个固定的间隔)来获取数据库表中的新更改。我不完全了解如何使应用程序实时

当前实施:
在我的应用程序中,我通过ajax轮询从数据库(MariaDB)获取数据,并在客户端的表中显示它

预期行为:
没有来自客户端的轮询,只要数据库端有更改,它就应该在所有连接的客户端上更新

在我的搜索过程中,我遇到了一些解决方案,它们是:

  • Node.js+server.io+oracle数据库
  • 重新思考数据库
  • 服务器发送事件
  • 连续查询通知
  • 请帮我找到更好的解决方案。

    听起来不错

    Node.js
    甲骨文(+CQN)
    Socket.io

    • Node.js服务器为通知注册查询
    • 在通知更改时,node.js服务器从数据库中提取更改
    • 成功检索更改后,node.js服务器使用socket.io将更改发布到所有感兴趣的客户端

    Chintan,请查看socket.io,因为它将涵盖您想要的所有内容

    Socket.IO支持基于事件的实时双向通信。它适用于所有平台、浏览器或设备,同样关注 可靠性和速度

    服务器端

    在node.js服务器上,您需要设置一个引用连接的“On”事件。此连接事件是一个默认事件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:是的,所有组件都在同一台服务器上。