node.js中的长轮询 - 如果没有可用数据,如何"暂停"挂起的请求?

hel*_*hod 5 long-polling node.js

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

我想到了3种可能的解决方案:

  1. 将pendingRequest与时间戳存储在散列/对象中,然后调用setIntervall,以便在时间戳太旧时,每隔1/2/x秒删除pendingRequests.
  2. 在套接字连接上设置超时

这两种解决方案似乎都不合理,那么Node.js实现这样的方法会是什么?

Mic*_*ley 5

为什么听起来不合理呢?特别是,在套接字上设置超时似乎对我有意义,如:

  1. 有一种内置的方法可以做到这一点
  2. 连接超时时触发事件,允许您进行任何必要的清理(例如,在套接字上调用end/ destroy)

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

您可能对这些文章感兴趣,每个文章都以不同方式处理过期连接: