如何在NodeJS / Javascript中长时间轮询?

时间:2014-11-06 14:12:48

标签: javascript node.js http long-polling

为了清楚我对长轮询的理解是你按时间间隔向服务器发出请求。

我正在尝试实施一个比特币购买系统来检查区块链中钱包余额的变化。我知道有一些websockets这样做,但我必须等待1次确认才能收到更新,REST API提供了更大的灵活性,所以我更愿意每隔5秒左右向服务器发出一次请求并检查每个响应我的余额发生了变化,然后从那里开始。

问题是我似乎无法弄清楚如何在NodeJS中执行此操作。从功能上讲,这就是我想象代码的方式。

Get current balance (make request)
Get current balance again (make request)
Check if there is a difference
**If not** 
  wait 5 seconds
  Get current balance
  Check for difference
  repeat till different (or till timeout or something)
If different
do some functions and stop checking balance.

我一直试图做每一步但我已经陷入困境,想弄清楚如何创建一个检查平衡的循环,并在它发生变化时停止循环。

我最初的想法是使用承诺和一些for循环,但这并没有实现。

所以现在我在寻求你的帮助,我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是设置setInterval计时器以每隔x秒启动一次请求。通过在响应之后设置一些逻辑,您可以选择取消引用定时器并触发另一个功能。这是snippet。您会注意到我设置了一个变量来引用计时器,然后通过将其设置为null来取消引用它,然后GC足够智能地释放。您也可以使用' clearTimeout'功能,这可能是更好的方式。