UNPKG

http2server

Version:

Simple HTTP/2 push server

49 lines (41 loc) 1.43 kB
var fs = require('fs') var path = require('path') var http2 = require('http2') var urlParse = require('url').parse // Setting the global logger (optional) http2.globalAgent = new http2.Agent({ rejectUnauthorized: false // log: require('../test/util').createLogger('client') }) // Sending the request var url = process.argv.pop() var options = urlParse(url) // Optionally verify self-signed certificates. // if (options.hostname === 'localhost') { // options.key = fs.readFileSync(path.join(__dirname, '/localhost.key')) // options.ca = fs.readFileSync(path.join(__dirname, '/localhost.crt')) // } var request = process.env.HTTP2_PLAIN ? http2.raw.get(options) : http2.get(options) // Receiving the response request.on('response', function (response) { response.pipe(process.stdout) response.on('end', finish) }) // Receiving push streams request.on('push', function (pushRequest) { var filename = path.join(__dirname, '/push-' + push_count) push_count += 1 console.error('Receiving pushed resource: ' + pushRequest.url + ' -> ' + filename) pushRequest.on('response', function (pushResponse) { pushResponse.pipe(fs.createWriteStream(filename)).on('finish', finish) }) }) // Quitting after both the response and the associated pushed resources have arrived var push_count = 0 var finished = 0 function finish () { finished += 1 if (finished === (1 + push_count)) { process.exit() } }