Trying something with spdy

This commit is contained in:
Kasper Rynning-Tønnesen
2018-08-21 15:48:28 +02:00
parent 8fa1df9c0a
commit d4950aea21
4 changed files with 176 additions and 17 deletions

143
package-lock.json generated
View File

@@ -986,8 +986,7 @@
"core-util-is": { "core-util-is": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
"dev": true
}, },
"cors": { "cors": {
"version": "2.8.4", "version": "2.8.4",
@@ -1206,6 +1205,11 @@
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
"dev": true "dev": true
}, },
"detect-node": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz",
"integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc="
},
"dns-prefetch-control": { "dns-prefetch-control": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz", "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz",
@@ -2543,6 +2547,11 @@
"glogg": "^1.0.0" "glogg": "^1.0.0"
} }
}, },
"handle-thing": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz",
"integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ="
},
"handlebars": { "handlebars": {
"version": "4.0.11", "version": "4.0.11",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
@@ -2724,6 +2733,46 @@
"resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-2.0.2.tgz", "resolved": "https://registry.npmjs.org/hooks-fixed/-/hooks-fixed-2.0.2.tgz",
"integrity": "sha512-YurCM4gQSetcrhwEtpQHhQ4M7Zo7poNGqY4kQGeBS6eZtOcT3tnNs01ThFa0jYBByAiYt1MjMjP/YApG0EnAvQ==" "integrity": "sha512-YurCM4gQSetcrhwEtpQHhQ4M7Zo7poNGqY4kQGeBS6eZtOcT3tnNs01ThFa0jYBByAiYt1MjMjP/YApG0EnAvQ=="
}, },
"hpack.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
"integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
"requires": {
"inherits": "^2.0.1",
"obuf": "^1.0.0",
"readable-stream": "^2.0.1",
"wbuf": "^1.1.0"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"hpkp": { "hpkp": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz", "resolved": "https://registry.npmjs.org/hpkp/-/hpkp-2.0.0.tgz",
@@ -2740,6 +2789,11 @@
"integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=",
"dev": true "dev": true
}, },
"http-deceiver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
"integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc="
},
"http-errors": { "http-errors": {
"version": "1.6.3", "version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
@@ -3449,6 +3503,11 @@
"dom-walk": "^0.1.0" "dom-walk": "^0.1.0"
} }
}, },
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -3971,6 +4030,11 @@
"isobject": "^3.0.1" "isobject": "^3.0.1"
} }
}, },
"obuf": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
},
"on-finished": { "on-finished": {
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -4547,8 +4611,7 @@
"process-nextick-args": { "process-nextick-args": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
"dev": true
}, },
"promise": { "promise": {
"version": "7.3.1", "version": "7.3.1",
@@ -4989,6 +5052,11 @@
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
}, },
"select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
"integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo="
},
"semver": { "semver": {
"version": "4.3.6", "version": "4.3.6",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
@@ -5385,6 +5453,62 @@
"integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=",
"dev": true "dev": true
}, },
"spdy": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz",
"integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=",
"requires": {
"debug": "^2.6.8",
"handle-thing": "^1.2.5",
"http-deceiver": "^1.2.7",
"safe-buffer": "^5.0.1",
"select-hose": "^2.0.0",
"spdy-transport": "^2.0.18"
}
},
"spdy-transport": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz",
"integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==",
"requires": {
"debug": "^2.6.8",
"detect-node": "^2.0.3",
"hpack.js": "^2.1.6",
"obuf": "^1.1.1",
"readable-stream": "^2.2.9",
"safe-buffer": "^5.0.1",
"wbuf": "^1.7.2"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"split-string": { "split-string": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -5956,8 +6080,7 @@
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
"dev": true
}, },
"utils-merge": { "utils-merge": {
"version": "1.0.1", "version": "1.0.1",
@@ -6132,6 +6255,14 @@
} }
} }
}, },
"wbuf": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
"integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
"requires": {
"minimalistic-assert": "^1.0.0"
}
},
"whet.extend": { "whet.extend": {
"version": "0.9.9", "version": "0.9.9",
"resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",

View File

@@ -53,6 +53,7 @@
"request": "^2.85.0", "request": "^2.85.0",
"socket.io": "^2.1.0", "socket.io": "^2.1.0",
"socket.io-redis": "^5.2.0", "socket.io-redis": "^5.2.0",
"spdy": "^3.4.7",
"sticky-session": "^1.1.2", "sticky-session": "^1.1.2",
"uniqid": "^4.1.1" "uniqid": "^4.1.1"
} }

View File

@@ -1,16 +1,16 @@
var cluster = require('cluster'), var cluster = require('cluster'),
net = require('net'), net = require('net'),
path = require('path'), path = require('path'),
//publicPath = path.join(__dirname, 'public'), http = require('spdy'),
http = require('http'), port = 8080,
port = 8080, fs = require('fs'),
//farmhash = require('farmhash'), uniqid = require('uniqid'),
uniqid = require('uniqid'), num_processes = require('os').cpus().length;
num_processes = require('os').cpus().length;
publicPath = path.join(__dirname, 'public'); publicPath = path.join(__dirname, 'public');
pathThumbnails = __dirname; pathThumbnails = __dirname;
var main_client = fs.readFileSync(publicPath + '/assets/dist/main.min.js');
try { try {
var redis = require("redis"); var redis = require("redis");
@@ -72,6 +72,14 @@ function startClustered(redis_enabled) {
function startSingle(clustered, redis_enabled) { function startSingle(clustered, redis_enabled) {
var server; var server;
var client = require('./apps/client.js'); var client = require('./apps/client.js');
var options = {
spdy: {
protocols: [ 'h2', 'spdy/3.1', 'http/1.1' ],
plain: true,
'x-forwarded-for': true,
}
};
try { try {
var cert_config = require(path.join(path.join(__dirname, 'config'), 'cert_config.js')); var cert_config = require(path.join(path.join(__dirname, 'config'), 'cert_config.js'));
var fs = require('fs'); var fs = require('fs');
@@ -83,13 +91,24 @@ function startSingle(clustered, redis_enabled) {
cert: certificate, cert: certificate,
ca: ca ca: ca
}; };
var https = require('https'); options.spdy.key = credentials.key;
server = https.Server(credentials, routingFunction); options.spdy.cert = credentials.cert;
options.spdy.ca = credentials.ca;
options.spdy.secure = true;
options.ssl = true;
options.secure = false;
//var https = require('https');
//server = https.Server(credentials, routingFunction);
} catch(err){ } catch(err){
console.log("Starting without https (probably on localhost)"); console.log("Starting without https (probably on localhost)");
server = http.createServer(routingFunction); options.ssl = false;
options.secure = false;
options.spdy.secure = false;
//server = http.createServer(routingFunction);
} }
server = http.createServer(options, routingFunction);
console.log(server);
if(clustered) { if(clustered) {
server.listen(onListen); server.listen(onListen);
} else { } else {
@@ -131,6 +150,13 @@ function routingFunction(req, res, next) {
if(subdomain.length > 1 && subdomain[0] == "admin") { if(subdomain.length > 1 && subdomain[0] == "admin") {
admin(req, res, next); admin(req, res, next);
} else { } else {
console.log("this other place");
res.push('/assets/dist/main.min.js', headers, function(err, stream){
console.log("this place");
if (err) return;
stream.end(main_client);
});
client(req, res, next); client(req, res, next);
} }
} catch(e) { } catch(e) {

View File

@@ -18,6 +18,7 @@ try {
var add = ""; var add = "";
var express = require('express'); var express = require('express');
var app = express(); var app = express();
const url = require('url');
var compression = require('compression'); var compression = require('compression');
var exphbs = require('express-handlebars'); var exphbs = require('express-handlebars');
var cors = require('cors'); var cors = require('cors');