如何推送/通知客户端nodejs中的新数据?

问题描述:

比方说,我从数据库或API获取数据。我有一个nodejs服务器,它允许我通过端点从这些数据库或api获取数据。我有一个客户端(reactjs)获取数据并显示在屏幕上。如何推送/通知客户端nodejs中的新数据?

当有新数据可用时,我如何更新客户端? 我不在寻找连续的ajax请求。

+4

我想你正在寻找['socket.io'](https://socket.io/)。 – doutriforce

+0

是的,但我怎么让服务器发送事件“每当”有新的数据? –

+2

你可以读取它我socket.it文档 –

问题在于检测数据更改何时发生,因此您可以向所有连接的客户端广播一般事件。

通常使数据更新的api与需要广播事件的api是相同的。

假设我们具有三个客户端应用程序连接,经由插座,到服务器API:APP-1,APP-2,APP-3:

  1. APP-1经由API
  2. 使得数据更新
  3. 的API执行更新和操作成功,广播data updated事件发送到所有连接的客户端
  4. APP-1,应用程序2和应用程序-3 所有接收data updated事件,并相应地作出反应。

如果数据更新是由独立于你的API,通过外部数据的API,例如,然后事情变得更加复杂:

  • 你必须对数据的源代码控制-api

    您可以在api和data-api之间创建套接字连接。当data-api检测到数据更改时,它会向您的api发送一个data updated事件。如上所述,此事件会通过您的api转发给所连接的客户端。

  • 数据的API是你有过

    你唯一的选择是定期从您的API,并在检测到变化时轮询数据API无法控制的第三方,广播data updated事件到所有连接的客户端。虽然此解决方案涉及轮询,但它具有高性能和可扩展性,因为它只涉及来自API的单个常规呼叫,而不管有多少个客户端连接。

+0

以及更新将独立于任何客户端干扰。想想一个正在被其他人更新的数据库或API。我试图做的是每次更改时获取更新的数据或者新的数据显示 –

+0

别人不是来自我的应用程序,可能是世界上任何人 –

+0

是数据库API第三方还是您有控制权?码?这里使用的是什么数据库? – biofractal