使用net.server一次性处理http和express
Use net.server to handle http and express all at once
我有一台服务器使用 net.Server
,还有两台服务器使用 http.Server
和 express()
。它看起来像这样
...
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_http
和 s_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_net
、request to s_http
和 request 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 服务器就已经将所有这三个都放在一起了。没有必要也没有必要创建三个独立的服务器,然后尝试以某种方式将它们组合起来。
我有一台服务器使用 net.Server
,还有两台服务器使用 http.Server
和 express()
。它看起来像这样
...
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_http
和 s_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_net
、request to s_http
和 request 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 服务器就已经将所有这三个都放在一起了。没有必要也没有必要创建三个独立的服务器,然后尝试以某种方式将它们组合起来。