Можно ли создать сервер Express, прослушивающий как HTTP, так и HTTPS, с теми же маршрутами и теми же средними?
В настоящее время я делаю это с помощью Express по HTTP, stunnel туннелирует HTTPS для Express, но я предпочитаю чистое решение Node.
Я могу сделать это с помощью этого кода, но используя метод handle
, который помечен как закрытый:
var express = require( 'express' )
, https = require("https")
, fs = require( 'fs' );
var app = express.createServer();
// init routes and middlewares
app.listen( 80 );
var privateKey = fs.readFileSync( 'privatekey.pem' ).toString();
var certificate = fs.readFileSync( 'certificate.pem' ).toString();
var options = {key: privateKey, cert: certificate};
https.createServer( options, function(req,res)
{
app.handle( req, res );
} ).listen( 443 );