Tôi vừa mới bắt đầu học node.js. Tôi có mẫu (máy chủ) sau:node.js + kết nối lỗi 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"); });
Nếu tôi gọi/fail0 và/fail1 cùng một lúc, một trong số chúng sẽ thành công và lỗi kia không thành công với lỗi 404. gọi/success0 và success1 tuy nhiên hoạt động. Ai đó có thể khai sáng cho tôi tại sao một người làm việc và người khác thì không? Dưới đây là khách hàng của tôi thử nghiệm:
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();
}
chạy trên lợi nhuận của khách hàng:
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
Vấn đề hấp dẫn. Tôi có thể tái tạo điều này ở đây nhưng tôi không chắc chắn làm thế nào để sửa chữa nó. Nó dường như xoay quanh việc tái sử dụng 'thất bại'. Nếu bạn sao chép 'fail' thành hai hàm' fail0' và 'fail1' thì nó hoạt động tốt. Phải là một cái gì đó để làm với Express hoặc kết nối router hoặc middleware logic nhưng tôi không thể phát hiện nó là gì. – RandomEtc