1

いくつかの動作を追加する必要があるため、Node.js http(s) サーバーを派生させたいと考えています。

たとえば、機能も備えた http サーバーが必要ですfoobar。だから私はこのようなことができるようにしたい:

var server = http.createServer(function (req, res) { ... }).listen(3000);
server.foobar();

もちろん、どうにかしてモジュールから派生させる必要がありhttpますが、どうすればこれを行うことができますか? どうやらHttp私がオーバーライドできるコンストラクターはありません...

アイデアやヒントはありますか?

4

2 に答える 2

3

正しい方法は、サーバーのサブクラスを作成することです。

var http = require('http')

class MyServer extends http.Server {
  foobar () {
    // any code
  }
}

var server = new MyServer(function (req, res) {
  // any code
})

1.0 未満のバージョンの Node.js を実行している場合は、古いクラス構文を使用する必要があります。

var http = require('http')

function MyServer (handler) {
  http.Server.call(this, handler)
}

MyServer.prototype = Object.create(http.Server.prototype)

MyServer.prototype.foobar = function () {
  // any code
}

var server = new MyServer(function (req, res) {
  // any code
})
于 2015-10-05T14:05:37.453 に答える
0

私はテストしていませんが、それを与えるだけでよいと思います:

var http = require('http');
http.Server.prototype.foobar = function () {};

ここでわかるように、createServer 関数は、2 行前に公開された新しい Server オブジェクトをインスタンス化するファクトリに他なりません。

于 2013-06-19T13:24:01.333 に答える