Node.js如何检测浏览器端已经结束了一个HTTP会话?

我试图用Node.js来实现Comet(XHR Streaming)。 由于XHR Streaming使客户端XHR.responseText不断增长,客户端需要closures当前的XHR并重新启动XHR Streaming。

在服务器端,对于每个XHRstream,HTTP.ServerResponse对象应保持到HTTP会话结束。

问题是:Node.js如何检测浏览器端已经结束了一个HTTP会话?

我想,理想情况下,http.ServerResponse.write有一个callback参数。 因此,写入一个closures的HTTP会话会触发callback,并让我们知道它被中止。 但是,没有这样的callback参数。

我认为http://socket.io/将完成你所需要的client.on('disconnect', function(){ … })

req.socket似乎不是一个已发布的属性。 我用过:

 res.connection.on('close', function() { ... }); 

正如@macarthy已经提到:socket.io是使用node.js进行彗星实现的方式。

但是,如果您希望自己实现XHRstream,则应在每个http.ServerResponse上都有一个名为“end”的事件。 每个会话触发一次这个事件,没有任何参数来通知你的应用程序一个封闭的响应。

我总是使用像..

 var server = http.createServer(function(req, res) { req.socket.addListener("end", function() { ///he gone }); });