我想派生Node.js http(s)服务器,因为我需要添加一些行为。
例如,我想要一个也具有foobar
功能的http服务器。所以我希望能够做到这样的事情:
var server = http.createServer(function (req, res) { ... }).listen(3000);
server.foobar();
当然我某种程度上需要从http
模块派生,但我怎么能这样做呢?显然,我没有覆盖的Http
构造函数......
任何想法或提示?
答案 0 :(得分:1)
我没有经过测试,但是虽然我会说你只需要:
var http = require('http');
http.Server.prototype.foobar = function () {};
正如您所看到的here,createServer函数只是一个工厂,实例化之前暴露过两行的新Server对象。
答案 1 :(得分:1)
正确的方法是创建服务器的子类。
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
})