Acabo de empezar a aprender node.js. Tengo siguiente (servidor) de la muestra:node.js + connect error 404
var app = require("express").createServer();
app.listen(80);
function fail(req, res, next) { setTimeout(next, 10); }
function success() {
return function(req, res, next) { setTimeout(next, 10); };
}
app.get("/success0", success(), function(req, res, next) { res.send("0"); });
app.get("/success1", success(), function(req, res, next) { res.send("1"); });
app.get("/fail0", fail, function(req, res, next) { res.send("0"); });
app.get("/fail1", fail, function(req, res, next) { res.send("1"); });
Si llamo/fail0 y/fail1 al mismo tiempo, uno de ellos tendrá éxito y el otro con error 404. calling/success0 y success1 sin embargo funciona. ¿Puede alguien aclararme por qué uno trabaja y el otro no? A continuación se muestra mi cliente prueba:
var http = require("http");
var sys = require("sys");
for(var i = 0; i < 10; i++) {
var io = http.createClient(80, "localhost");
var request = io.request("GET", "/fail" + (i%2), {host:"localhost"});
request.on("response", function(response) {
var body = "";
response.on("data", function(data) { body += data; });
response.on("end", function() {
sys.puts(response.statusCode + ":" + body);
});
}).end();
}
corriendo rentabilidad por encima del cliente:
404:Cannot GET /fail0 200:1 404:Cannot GET /fail0 200:1 404:Cannot GET /fail0 200:1 404:Cannot GET /fail0 200:1 404:Cannot GET /fail0 200:1
Problema intrigante. Puedo reproducir esto aquí, pero no estoy seguro de cómo solucionarlo. Parece depender de la reutilización de 'fail'. Si clonas 'fail' en dos funciones' fail0' y 'fail1' entonces funciona bien. Debe ser algo relacionado con el enrutador o la lógica de middleware de Express o Connect, pero no puedo identificar de qué se trata. – RandomEtc