Node.js Express块

我的问题是,我打算使用快递caching我接收一段时间的所有请求,直到我一次发送所有的响应。 但不幸的是,我不能收到第二个要求,直到我回应了第一个。 所以我想node / express是以某种方式阻止其他请求的进一步处理。

我为你build立一个最小的工作范例,这样你就可以更好地看到我在说什么。

var express = require('express'); var app = express(); var ca = []; app.get('/hello.txt', function(req, res){ ca.push(res); console.log("Push"); }); setInterval(function(){ while (ca.length) { var res = ca.shift(); res.send('Hello World'); console.log("Send"); } },9000); var server = app.listen(3000, function() { console.log('Listening on port %d', server.address().port); }); 

当我只发送一个请求到localhost:3000并等待9秒,我可以发送第二个。 但是,当我发送两个而不等待间隔的callback,第二个被阻塞,直到第一个间隔触发。

长话短说:为什么这种阻塞发生,以及如何避免这种阻塞。

PS:看来默认的http包显示了另一个行为http://blog.nemikor.com/2010/05/21/long-polling-in-nodejs/

尝试与Firefox和铬,以防止序列化请求…

好的,我有解决scheme。

问题不在我的代码中,这是由Chrome引起的。 Chrome浏览器似乎是序列化所有请求,目标是相同的URL。 但它却发送了这两个请求,并且不会为第二个请求提供第一个响应。

无论如何,谢谢你的帮助!