can haz wss

This commit is contained in:
AJ ONeal 2017-05-16 02:20:02 -05:00
父節點 47d72365cc
當前提交 3aa1085008
共有 1 個文件被更改,包括 49 次插入11 次删除

查看文件

@ -5,6 +5,7 @@ module.exports.create = function (deps, conf, greenlockMiddleware) {
var app = express();
var adminApp = require('./admin').create(deps, conf);
var domainMatches = require('../match-domain').match;
var proxyRoutes = [];
var adminDomains = [
/\blocalhost\.admin\./
@ -112,16 +113,30 @@ module.exports.create = function (deps, conf, greenlockMiddleware) {
res.end(require('../proxy-err-resp').getRespBody(err, conf.debug));
});
return function (req, res, next) {
var hostname = req.headers.host.split(':')[0];
var relevant = mod.domains.some(function (pattern) {
return domainMatches(pattern, hostname);
});
return {
web: function (req, res, next) {
var hostname = req.headers.host.split(':')[0];
var relevant = mod.domains.some(function (pattern) {
return domainMatches(pattern, hostname);
});
if (relevant) {
proxy.web(req, res);
} else {
next();
if (relevant) {
proxy.web(req, res);
} else {
next();
}
}
, ws: function (req, socket, head, next) {
var hostname = req.headers.host.split(':')[0];
var relevant = mod.domains.some(function (pattern) {
return domainMatches(pattern, hostname);
});
if (relevant) {
proxy.ws(req, socket, head);
} else {
next();
}
}
};
}
@ -164,7 +179,9 @@ module.exports.create = function (deps, conf, greenlockMiddleware) {
(conf.http.modules || []).forEach(function (mod) {
if (mod.name === 'proxy') {
app.use(createProxyRoute(mod));
var proxyRoute = createProxyRoute(mod);
proxyRoutes.push(proxyRoute);
app.use(proxyRoute.web);
}
else if (mod.name === 'static') {
app.use(createStaticRoute(mod));
@ -175,5 +192,26 @@ module.exports.create = function (deps, conf, greenlockMiddleware) {
});
app.use(respond404);
return require('http').createServer(app);
var server = require('http').createServer(function (req, res) {
app(req, res)
});
server.on('upgrade', function (req, socket, head) {
if (!proxyRoutes.length) {
socket.end();
}
function proxyWs() {
var proxyRoute = proxyRoutes.shift();
if (!proxyRoute) {
socket.end();
}
proxyRoute.ws(req, socket, head, proxyWs);
}
proxyWs();
});
return server;
};