使用net.server一次性处理http和express

Use net.server to handle http and express all at once

我有一台服务器使用 net.Server,还有两台服务器使用 http.Serverexpress()。它看起来像这样

...
var s_net = net.createServer();
var s_http = http.createServer();
var s_exp = express();
s_net.listen(opt.port);
s_http.listen(s_net);
s_exp.listen(s_net);
console.log(`listening on ${opt.port}`);

我使用 s_net 作为 s_https_exp 的处理程序。然后,我

s_net.on("connection", function(c){
    console.log("incoming connection to s_net")
})
s_http.on("request", function(req, res){
    console.log("request to s_http");
});
s_exp.all("/*", function(req, res, next){
    console.log("request to s_exp");
    res.send("<h1>Hello World!</h1>");
});

但在控制台上,我只得到

H:\NodeJS\web3>node index.js
listening on 80
request to s_exp

在哪里,它只响应 s_exp 请求。
我怎样才能得到它们?
incoming connection to s_netrequest to s_httprequest to s_exp
参考文献:
https://nodejs.org/dist/latest-v9.x/docs/api/net.html#net_server_listen_handle_backlog_callback

当您使用 Express 创建服务器时,您已经有了一个 http 服务器。它只是一个将 Express 作为传入请求的请求处理程序的 http 服务器。而且,http 服务器继承自 net.Server,因此它已经是 TCP/IP 服务器。创建一个 express 服务器,然后您可以在其上使用任何 express、http 或 net.Server 功能,包括为各种服务器事件设置事件侦听器。

因此,仅创建一个通用的 Express 服务器就已经将所有这三个都放在一起了。没有必要也没有必要创建三个独立的服务器,然后尝试以某种方式将它们组合起来。