a test for 1124717 ran into https://github.com/molnarg/node-http2/issues/89 which is fixed in this update
56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
var fs = require('fs');
|
|
var path = require('path');
|
|
var http2 = require('..');
|
|
|
|
// We cache one file to be able to do simple performance tests without waiting for the disk
|
|
var cachedFile = fs.readFileSync(path.join(__dirname, './server.js'));
|
|
var cachedUrl = '/server.js';
|
|
|
|
// The callback to handle requests
|
|
function onRequest(request, response) {
|
|
var filename = path.join(__dirname, request.url);
|
|
|
|
// Serving server.js from cache. Useful for microbenchmarks.
|
|
if (request.url === cachedUrl) {
|
|
response.end(cachedFile);
|
|
}
|
|
|
|
// Reading file from disk if it exists and is safe.
|
|
else if ((filename.indexOf(__dirname) === 0) && fs.existsSync(filename) && fs.statSync(filename).isFile()) {
|
|
response.writeHead('200');
|
|
|
|
// If they download the certificate, push the private key too, they might need it.
|
|
if (response.push && request.url === '/localhost.crt') {
|
|
var push = response.push('/localhost.key');
|
|
push.writeHead(200);
|
|
fs.createReadStream(path.join(__dirname, '/localhost.key')).pipe(push);
|
|
}
|
|
|
|
fs.createReadStream(filename).pipe(response);
|
|
}
|
|
|
|
// Otherwise responding with 404.
|
|
else {
|
|
response.writeHead('404');
|
|
response.end();
|
|
}
|
|
}
|
|
|
|
// Creating a bunyan logger (optional)
|
|
var log = require('../test/util').createLogger('server');
|
|
|
|
// Creating the server in plain or TLS mode (TLS mode is the default)
|
|
var server;
|
|
if (process.env.HTTP2_PLAIN) {
|
|
server = http2.raw.createServer({
|
|
log: log
|
|
}, onRequest);
|
|
} else {
|
|
server = http2.createServer({
|
|
log: log,
|
|
key: fs.readFileSync(path.join(__dirname, '/localhost.key')),
|
|
cert: fs.readFileSync(path.join(__dirname, '/localhost.crt'))
|
|
}, onRequest);
|
|
}
|
|
server.listen(process.env.HTTP2_PORT || 8080);
|