首页 > 解决方案 > NodeJS - 在服务器创建后设置 http 服务器请求监听器

问题描述

在 NodeJS 中,通常你会像这样创建一个 HTTP 服务器:

const http = require('http');

const requestListener = // create listener, e.g. with express()
const server = http.createServer(requestListener);
server.listen(8080);

我的问题是,是否可以将请求侦听器的设置推迟到稍后的时间点(最好甚至在服务器已经在侦听之后)?

我想要这样的东西:

const http = require('http');

const server = http.createServer();
server.listen(8080);

const requestListener = // create listener, e.g. with express()
server.setRequestListener(requestListener);

显然,我可以很容易地创建这样的功能,从 HTTP 服务器类继承,但我很好奇 NodeJS 是否提供了这样做的内置方式。

标签: node.js

解决方案


这是 Node.js 文档中关于http.createServer()函数requestListener参数的说明:

requestListener是一个自动添加到 request事件中的函数。

进一步查看实际代码createServer()- 这实际上就是它对这个参数所做的一切。

因此,您只需在创建服务器后手动添加侦听器即可获得类似的行为。

server.on('request', requestListener)

只要您在请求到来之前设置它,它就应该可以正常工作。


推荐阅读