http2-express-bridge
Version:
wrapper for express app to work with http2 protocol
42 lines (37 loc) • 1.26 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define([], factory);
} else if (typeof exports !== "undefined") {
factory();
} else {
var mod = {
exports: {}
};
factory();
global.initMiddleware = mod.exports;
}
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function () {
"use strict";
const setPrototypeOf = require('setprototypeof');
module.exports = initMiddleware;
function initMiddleware(app) {
return function expressInit(req, res, next) {
if (app.enabled('x-powered-by')) res.setHeader('X-Powered-By', 'Express with http2-express-bridge');
req.res = res;
res.req = req;
req.next = next;
const {
socket
} = req.httpVersion === '2.0' ? req.stream.session : req; //Checking alpnProtocol for http2
if (socket.alpnProtocol && (socket.alpnProtocol === 'h2' || socket.alpnProtocol === 'h2c')) {
setPrototypeOf(req, app.http2Request);
setPrototypeOf(res, app.http2Response);
} else {
setPrototypeOf(req, app.request);
setPrototypeOf(res, app.response);
}
res.locals = res.locals || Object.create(null);
next();
};
}
});