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

时间:2016-09-26 09:39:37

标签: node.js websocket socket.io mariadb rethinkdb

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

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

预期行为:
没有来自客户端的轮询,并且无论何时数据库端发生更改,它都应该在所有连接的客户端进行更新。

在我搜索期间,我遇到了一些解决方案:

  1. Node.js + server.io + oracle DB
  2. RethinkDB
  3. 服务器发送事件
  4. 连续查询通知
  5. 请帮助我找到更好的解决方案。

2 个答案:

答案 0 :(得分:1)

听起来不错!

  

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

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

答案 1 :(得分:0)

Chintan,请查看socket.io,因为这将涵盖您想要的一切

  

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

服务器端

在您的node.js服务器上,您需要设置引用连接的' 事件。此连接事件是一个默认事件socket.io为我们提供了我们可以在客户端(套接字)连接时监听和触发的事件。所以在服务器中我们会有类似的东西:

socket.on('connection', function() { console.log('Someone just joined'); });

因此,对于连接我们服务器的每个套接字,将输出刚刚加入

的人

为了进一步扩展,您可以添加一个emit事件:

socket.on('connection', function() { console.log('Someone just joined'); socket.emit('hello', { message: 'Hello' } });

因此,当客户端连接此时,将发出事件事件。我们可以在客户端倾听这个事件,如下所示:

客户端

socket.on('hello', function(data) { console.log(data.message); // Hello });

Socket.io能够双向传输数据(双向),因此您也可以从客户端发出事件并在服务器上侦听

你还说你会让所有客户对某个事件作出反应,为此而不是做一个 socket.emit 你会改为 io.emit 。请记住,套接字只发送到该套接字。 Io发送到包括发件人在内的所有套接字,并使用 socket.broadcast.emit 将发送给所有连接的客户端,但不发送给发件人。

Check out socket.io ' website