轮询数据库获取值的最佳替代方法是什么?

时间:2017-07-08 00:13:49

标签: javascript mysql node.js ajax http

我有一个Javascript网络应用程序,我使用Node.JS作为服务器组件。

我想将我的应用与数据库集成。该数据库有一个表格,其中包含一个名为“status”的字段,该字段可以经常更改(每隔几分钟左右)。

我希望我的网络应用程序能够实时了解状态字段的值。

我当前的方法:

我当前在Javscript中有一个AJAX函数,它向我的Node.js服务器发送一个HTTP请求。 Node.js服务器从数据库中选择记录,然后将结果返回给AJAX函数,该函数在屏幕上显示结果。我已经设置了一个间隔来每秒执行一次该功能。

这似乎不是一个很好的选择,它在我的服务器上造成了很多流量。

实时监控SQL字段的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

如果所有客户端都对数据库中的相同值感兴趣并且数据库情况阻止了任何非轮询方案,那么您将需要将轮询从客户端移动到服务器,以便服务器可以轮询ONCE以获取所有客户端。这将极大地限制服务器和数据库服务器上的负载。

然后,您可以让每个客户端使用webSocket(或socket.io)连接连接到服务器,并且当数据库中的值发生更改(并且仅在那时)时,您可以通过以下方式向每个客户端发送更新消息webSocket连接。这将使用更少的服务器CPU和带宽以及客户端电池。