2016-09-26 26 views
1

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

当前实现:
在我的申请,我通过Ajax轮询获取数据从数据库(MariaDB的),并将其显示在表中的客户端。

预期的行为:
从客户端没有轮询并且只要在数据库方面的变化应该更新所有连接的客户端。

在我搜索我曾遇到一些解决方案,这是传来:

  1. 的Node.js + server.io + Oracle数据库
  2. RethinkDB
  3. 服务器发送的事件
  4. 连续查询通知

请帮助我找到更好的解决方案。

+0

是在_same_服务器(甚至_same_ VM)中的所有组件吗? –

+0

@rick James:是在同一台服务器上的所有组件。 –

回答

1

听起来对我很好!

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

  • 在变化的通知

    • Node.js的服务器寄存器查询的node.js服务器拉取来自数据库的更改
    • 成功检索更改后,node.js服务器使用socket.io向所有感兴趣的客户端发布更改
    +0

    我相信SQL服务器也有类似的通知服务,如果你更喜欢使用它 – Banners

    +0

    如果你想了解更多,请查看我的博客文章,其中包含一些示例应用程序:https://jsao.io/2015/02/实时数据,与节点-JS-插座-IO和Oracle的数据库/ –

    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

    相关问题