diff -r 000000000000 -r 6474c204b198 testing/xpcshell/node-http2/example/server.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testing/xpcshell/node-http2/example/server.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,49 @@ +var fs = require('fs'); +var path = require('path'); +var http2 = require('..'); + +var options = process.env.HTTP2_PLAIN ? { + plain: true +} : { + key: fs.readFileSync(path.join(__dirname, '/localhost.key')), + cert: fs.readFileSync(path.join(__dirname, '/localhost.crt')) +}; + +// Passing bunyan logger (optional) +options.log = require('../test/util').createLogger('server'); + +// 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'; + +// Creating the server +var server = http2.createServer(options, function(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(); + } +}); + +server.listen(process.env.HTTP2_PORT || 8080);