如何在 Node.js 中捕获原始请求

use*_*559 4 javascript sockets node.js express

我能够使用下面的源在 Node.js 中捕获原始请求。

var http = require('http');
var express = require('express');

var remote = express();
remote.use(function(req, res, next) {
  req.socket.once('data', function(data) {
    console.log(data.toString());
  });
  next();
});

remote.use(function(req, res, next) {
  res.end('end');
});

http.createServer(remote).listen(8080);
Run Code Online (Sandbox Code Playgroud)

但是这个源可以在(包括)第二个请求之后捕获原始请求,因为第一个请求在绑定事件处理程序之前被消耗。如果客户端不使用保持活动状态,我将无法捕获任何请求。

如何捕获原始请求,包括第一个请求?

use*_*559 5

我找到了一种在 http.Server 上使用'connection' 事件的方法

var http = require('http');
var express = require('express');

var remote = express();
remote.use(function(req, res, next) {
  res.end('end');
});

var server = http.createServer(remote);
server.on('connection', function(socket) {
  socket.on('data', function(chunk) {
    console.log(chunk.toString());
  });
});
server.listen(8080);
Run Code Online (Sandbox Code Playgroud)