在node.js中进行长轮询 – 如果没有数据可用,如何“超时”挂起的请求?
我试图在Node.js中实现一个http长轮询服务器,并且不知道如何在超时达到时closures/closures挂起的请求。
我想到了三种可能的解决scheme:
- 将pendingRequest存储在一个散列/对象中,然后调用setIntervall,这样如果时间戳太旧,每隔1/2 / xs的pendingRequest就会被删除。
- 在套接字连接上设置超时
这两个解决scheme似乎都不是很合理,那么Node.js如何实现这样的function呢?
为什么这些声音不合理呢? 特别是,在套接字上设置超时值对我来说似乎是有意义的,如下所示:
- 有一个内置的方法来做到这一点
- 当连接超时时触发一个事件,允许你做任何必要的清理(例如,在socket上调用
end
/destroy
)
我可能会走这条路线,以便Node处理幕后的超时; 但是,如果您的应用程序有意义,我不认为保持时间戳和手动过期连接是有害的。
您可能对这些文章感兴趣,每篇文章都以不同的方式处理即将到期的连接:
- 在Node.js中进行长轮询
- 如何用node.js写一个长轮询事件推送服务器