在node.js中进行长轮询 – 如果没有数据可用,如何“超时”挂起的请求?

我试图在Node.js中实现一个http长轮询服务器,并且不知道如何在超时达到时closures/closures挂起的请求。

我想到了三种可能的解决scheme:

  1. 将pendingRequest存储在一个散列/对象中,然后调用setIntervall,这样如果时间戳太旧,每隔1/2 / xs的pendingRequest就会被删除。
  2. 在套接字连接上设置超时

这两个解决scheme似乎都不是很合理,那么Node.js如何实现这样的function呢?

为什么这些声音不合理呢? 特别是,在套接字上设置超时值对我来说似乎是有意义的,如下所示:

  1. 有一个内置的方法来做到这一点
  2. 当连接超时时触发一个事件,允许你做任何必要的清理(例如,在socket上调用end / destroy

我可能会走这条路线,以便Node处理幕后的超时; 但是,如果您的应用程序有意义,我不认为保持时间戳和手动过期连接是有害的。

您可能对这些文章感兴趣,每篇文章都以不同的方式处理即将到期的连接:

  • 在Node.js中进行长轮询
  • 如何用node.js写一个长轮询事件推送服务器