添加到 http.createServer 方法的选项参数的用例是什么

cla*_*ine 3 javascript node.js

在浏览 node.js 文档时,我意识到http模块上的createServer方法已更新为接收选项参数。如果我没记错的话,它以前没有包含在以前版本的 node.js 中

http.createServer([options][, requestlistener])
Run Code Online (Sandbox Code Playgroud)

链接:https : //nodejs.org/dist/latest-v10.x/docs/api/http.html#http_http_createserver_options_requestlistener

目前尚不清楚这些选项可以用于什么,但它是一个具有IncomingMessageServerResponse属性的对象。

我只想说明它的用途和代码示例。

Ber*_*rgi 5

服务器确实为它收到的每个请求创建一个IncomingRequestServerResponse实例,并将它们传递给request事件侦听器 - 它们是您在典型(req, res) => { … }函数中接收的对象。

特别地,它们在 http 库的内部(以及类似地,在 https 和 http2 库中)在这里那里被实例化。这些createServer选项允许您自定义用于这些对象的类。一个简单的例子:

import { IncomingMessage, ServerResponse, createServer } from 'http';

class MyIncomingMessage extends IncomingMessage {
  …
}
class MyServerResponse extends ServerResponse {
  …
}

const server = createServer({
  IncomingMessage: MyIncomingMessage,
  ServerResponse: MyServerResponse,
});
server.on('request', (req, res) => {
  console.assert(req instanceof MyIncomingMessage);
  console.assert(res instanceof MyServerResponse);

  res.statusCode = 200;
  res.end('Hello!');
});
Run Code Online (Sandbox Code Playgroud)

一个简单的定制是添加您自己的方法,否则从内置的默认类继承。您还可以覆盖一些方法,或者您可以推出自己的实现。