diff --git a/packages/web-express/package.json b/packages/web-express/package.json index 65bd13609a2..0c841938cdf 100644 --- a/packages/web-express/package.json +++ b/packages/web-express/package.json @@ -38,5 +38,8 @@ "type": "git", "url": "http://github.com/midwayjs/midway.git" }, + "engines": { + "node": ">=10.10.0" + }, "gitHead": "a603d2348d6141f8f723901498f03a162a037708" } diff --git a/packages/web-express/src/framework.ts b/packages/web-express/src/framework.ts index 4a0c7ea64ba..d74bccb5e6a 100644 --- a/packages/web-express/src/framework.ts +++ b/packages/web-express/src/framework.ts @@ -72,12 +72,23 @@ export class MidwayExpressFramework extends BaseFramework< this.configurationOptions.ca ); - this.server = require('https').createServer( - this.configurationOptions, - this.app - ); + if (this.configurationOptions.http2) { + this.server = require('http2').createSecureServer( + this.configurationOptions, + this.app + ); + } else { + this.server = require('https').createServer( + this.configurationOptions, + this.app + ); + } } else { - this.server = require('http').createServer(this.app); + if (this.configurationOptions.http2) { + this.server = require('http2').createServer(this.app); + } else { + this.server = require('http').createServer(this.app); + } } // register httpServer to applicationContext this.applicationContext.registerObject(HTTP_SERVER_KEY, this.server); diff --git a/packages/web-express/src/interface.ts b/packages/web-express/src/interface.ts index 1eb47958987..fdbe7ce59e8 100644 --- a/packages/web-express/src/interface.ts +++ b/packages/web-express/src/interface.ts @@ -48,6 +48,10 @@ export interface IMidwayExpressConfigurationOptions extends IConfigurationOption * https ca */ ca?: string | Buffer | Array; + /** + * http2 support + */ + http2?: boolean; } export type MiddlewareParamArray = RequestHandler[]; diff --git a/packages/web-koa/package.json b/packages/web-koa/package.json index 453bdd1422f..5a0c95c61b3 100644 --- a/packages/web-koa/package.json +++ b/packages/web-koa/package.json @@ -42,5 +42,8 @@ "type": "git", "url": "http://github.com/midwayjs/midway.git" }, + "engines": { + "node": ">=10.10.0" + }, "gitHead": "a603d2348d6141f8f723901498f03a162a037708" } diff --git a/packages/web-koa/src/framework.ts b/packages/web-koa/src/framework.ts index db4595bbf8f..92b68ae3579 100644 --- a/packages/web-koa/src/framework.ts +++ b/packages/web-koa/src/framework.ts @@ -262,12 +262,23 @@ export class MidwayKoaFramework extends MidwayKoaBaseFramework< this.configurationOptions.ca ); - this.server = require('https').createServer( - this.configurationOptions, - this.app.callback() - ); + if (this.configurationOptions.http2) { + this.server = require('http2').createSecureServer( + this.configurationOptions, + this.app.callback() + ); + } else { + this.server = require('https').createServer( + this.configurationOptions, + this.app.callback() + ); + } } else { - this.server = require('http').createServer(this.app.callback()); + if (this.configurationOptions.http2) { + this.server = require('http2').createServer(this.app.callback()); + } else { + this.server = require('http').createServer(this.app.callback()); + } } // register httpServer to applicationContext this.applicationContext.registerObject(HTTP_SERVER_KEY, this.server); diff --git a/packages/web-koa/src/interface.ts b/packages/web-koa/src/interface.ts index ccb91a82919..d24c5abb9c1 100644 --- a/packages/web-koa/src/interface.ts +++ b/packages/web-koa/src/interface.ts @@ -40,6 +40,10 @@ export interface IMidwayKoaConfigurationOptions extends IConfigurationOptions { * https ca */ ca?: string | Buffer | Array; + /** + * http2 support + */ + http2?: boolean; } export type MiddlewareParamArray = Array>; diff --git a/packages/web/package.json b/packages/web/package.json index 106b7a329f2..1d774b52845 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -59,5 +59,8 @@ "type": "git", "url": "http://github.com/midwayjs/midway.git" }, + "engines": { + "node": ">=10.10.0" + }, "gitHead": "a603d2348d6141f8f723901498f03a162a037708" } diff --git a/packages/web/src/framework/singleProcess.ts b/packages/web/src/framework/singleProcess.ts index 5c20eb76c7f..f1415db7f48 100644 --- a/packages/web/src/framework/singleProcess.ts +++ b/packages/web/src/framework/singleProcess.ts @@ -101,12 +101,23 @@ export class MidwayWebSingleProcessFramework this.configurationOptions.ca ); - this.server = require('https').createServer( - this.configurationOptions, - this.app.callback() - ); + if (this.configurationOptions.http2) { + this.server = require('http2').createSecureServer( + this.configurationOptions, + this.app.callback() + ); + } else { + this.server = require('https').createServer( + this.configurationOptions, + this.app.callback() + ); + } } else { - this.server = require('http').createServer(this.app.callback()); + if (this.configurationOptions.http2) { + this.server = require('http2').createServer(this.app.callback()); + } else { + this.server = require('http').createServer(this.app.callback()); + } } if (options.isMainFramework === undefined) {