Bloque Node.js Express

Mi problema es que planeo usar Express para almacenar en caché todas las solicitudes que recibo durante un cierto tiempo hasta que envíe todas las respuestas a la vez. Pero desafortunadamente no puedo recibir una segunda solicitud hasta que haya respondido a la primera. Así que supongo que node / express está bloqueando de alguna manera el procesamiento posterior de otras solicitudes.

Construyo un ejemplo de trabajo mínimo para ti, para que puedas ver mejor de lo que estoy hablando.

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); }); 

Cuando envío solo una solicitud a localhost:3000 y espero 9 segundos, puedo enviar una segunda. Pero cuando envío ambos sin esperar la callback del intervalo, el segundo se bloquea hasta que se activa el primer intervalo.

Larga historia corta: ¿Por qué ocurre este locking y qué formas existen para evitar este locking?

PD: Parece que el paquete http predeterminado muestra otro comportamiento http://blog.nemikor.com/2010/05/21/long-polling-in-nodejs/

Pruébelo con Firefox y Chrome para evitar que se serialicen las solicitudes …

OK, tengo la solución.

El problema no estaba en mi código, fue causado por Chrome. Parece que Chrome está serializando todas las solicitudes, que apuntan a la misma URL. Pero, sin embargo, envía ambas solicitudes y no sirve la segunda solicitud con la respuesta de la primera.

De todos modos, gracias por tu ayuda!