如何推送/通知客户端nodejs中的新数据?
比方说,我从数据库或API获取数据。我有一个nodejs服务器,它允许我通过端点从这些数据库或api获取数据。我有一个客户端(reactjs)获取数据并显示在屏幕上。如何推送/通知客户端nodejs中的新数据?
当有新数据可用时,我如何更新客户端? 我不在寻找连续的ajax请求。
问题在于检测数据更改何时发生,因此您可以向所有连接的客户端广播一般事件。
通常使数据更新的api与需要广播事件的api是相同的。
假设我们具有三个客户端应用程序连接,经由插座,到服务器API:APP-1,APP-2,APP-3:
- APP-1经由API 使得数据更新
- 的API执行更新和操作成功,广播
data updated
事件发送到所有连接的客户端 - APP-1,应用程序2和应用程序-3 所有接收
data updated
事件,并相应地作出反应。
如果数据更新是由独立于你的API,通过外部数据的API,例如,然后事情变得更加复杂:
-
你必须对数据的源代码控制-api
您可以在api和data-api之间创建套接字连接。当data-api检测到数据更改时,它会向您的api发送一个
data updated
事件。如上所述,此事件会通过您的api转发给所连接的客户端。 -
数据的API是你有过
你唯一的选择是定期从您的API,并在检测到变化时轮询数据API无法控制的第三方,广播
data updated
事件到所有连接的客户端。虽然此解决方案涉及轮询,但它具有高性能和可扩展性,因为它只涉及来自API的单个常规呼叫,而不管有多少个客户端连接。
以及更新将独立于任何客户端干扰。想想一个正在被其他人更新的数据库或API。我试图做的是每次更改时获取更新的数据或者新的数据显示 –
别人不是来自我的应用程序,可能是世界上任何人 –
是数据库API第三方还是您有控制权?码?这里使用的是什么数据库? – biofractal
我想你正在寻找['socket.io'](https://socket.io/)。 – doutriforce
是的,但我怎么让服务器发送事件“每当”有新的数据? –
你可以读取它我socket.it文档 –