Tag: http

当缓冲使用streampipe道时,节点回应服务器的性能下降10倍

在节点v8.1.4和v6.11.1上 我从下面的回声服务器实现开始,我将其称为pipe.js或pipe 。 const http = require('http'); const handler = (req, res) => req.pipe(res); http.createServer(handler).listen(3001); 我用wrk和下面的lua脚本(简写为简称)进行了基准testing,将发送一个小的身体作为有效载荷。 wrk.method = "POST" wrk.body = string.rep("a", 10) 在每秒2k个请求和平均延迟为44ms的情况下,性能不是很好。 所以我写了另一个使用中间缓冲区的实现,直到请求完成,然后写出这些缓冲区。 我将这个称为buffer.js或缓冲区 。 const http = require('http'); const handler = (req, res) => { let buffs = []; req.on('data', (chunk) => { buffs.push(chunk); }); req.on('end', () => { res.write(Buffer.concat(buffs)); res.end(); }); […]

使用Node和Express进行基本的HTTP身份validation4

它看起来像使用Express v3实现基本的HTTP身份validation是微不足道的: app.use(express.basicAuth('username', 'password')); 版本4(我使用4.2)删除了basicAuth中间件,所以我有点卡住了。 我有下面的代码,但它不会导致浏览器提示用户input凭据,这是我想要的(以及我想象的旧方法): app.use(function(req, res, next) { var user = auth(req); if (user === undefined || user['name'] !== 'username' || user['pass'] !== 'password') { res.writeHead(401, 'Access invalid for user', {'Content-Type' : 'text/plain'}); res.end('Invalid credentials'); } else { next(); } });

如何指定HTTP错误代码?

我努力了: app.get('/', function(req, res, next) { var e = new Error('error message'); e.status = 400; next(e); }); 和: app.get('/', function(req, res, next) { res.statusCode = 400; var e = new Error('error message'); next(e); }); 但总是错误代码500被宣布。

如何在Node上的http.request()设置超时?

我试图设置一个HTTP客户端使用http.request没有运气的超时。 到目前为止我所做的是这样的: var options = { … } var req = http.request(options, function(res) { // Usual stuff: on(data), on(end), chunks, etc… } /* This does not work TOO MUCH… sometimes the socket is not ready (undefined) expecially on rapid sequences of requests */ req.socket.setTimeout(myTimeout); req.socket.on('timeout', function() { req.abort(); }); req.write('something'); req.end(); 任何提示?

正确的方法来设置响应状态和JSON内容的REST API使用nodejs和express

我正在玩Nodejs,并通过构build一个小的restAPI来expression。 我的问题是,设置代码状态以及响应数据的最佳做法/最佳方法是什么? 让我用一点代码解释一下(我不会把启动服务器所需的节点和expression式代码,只是所关心的路由器方法): router.get('/users/:id', function(req, res, next) { var user = users.getUserById(req.params.id); res.json(user); }); exports.getUserById = function(id) { for (var i = 0; i < users.length; i++) { if (users[i].id == id) return users[i]; } }; 下面的代码完美的工作,当发送邮递员的请求时,我得到以下结果: 正如你所看到的,状态显示200,这是OK的。 但这是做到这一点的最好方法吗? 有没有这样的情况,我应该自己设置状态,以及返回的JSON? 还是总是用快递处理? 例如,我刚做了一个快速testing,稍微修改了上面的get方法: router.get('/users/:id', function(req, res, next) { var user = users.getUserById(req.params.id); if (user == null […]

如何使用Node.js进行外部HTTP请求

这个问题很简单。 我想使用一个Node.js服务器作为代理来logging,validation和转发HTTP查询到后端HTTP服务器(PUT,GET和DELETE请求)。 我应该用什么库来达到这个目的? 恐怕我找不到一个。