用http模块访问后端失败,求解原因
这是用来访问的代码:
var http = require('http');
var req = http.request({
method: 'POST',
port: 3000,
headers: {
'Content-Type': 'application/json'
}
},function(res){
console.log(res);
});
req.write('{"foo":"');
var n=300000;
while (n--){
req.write('foo,');
}
req.end('bar"}');
console.log("over");
下面是后端代码:
var connect = require('connect');
var bodyParser =require("body-parser");
var app = connect();
app.use(function(res,req,next){
console.log("start");
next();
});
app.use(bodyParser());
app.use(function(req,res){
console.log(req.body.foo);
res.end("ok\n");
}).listen(3000);
都运行后,结果什么事情都没发生
1 回复
300000 个 foo
阻塞住了。这个字符串的大小大约有1G了,因为是 JSON 格式,body parser 会等到全部发完才开始解析的,除非电脑配置特别好,中间卡住不奇怪。
另外 connect 和 body-parser 现在的正确用法请参照 github 文档上的例子(connect,body-parser),比如创建 server 应该 http.createServer(app).listen(3000)
,用body parser 解析 JSON 应该app.use(bodyParser.json())
。