summaryrefslogtreecommitdiffstats
path: root/testing/xpcshell/node-http2/example/client.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/xpcshell/node-http2/example/client.js')
-rw-r--r--testing/xpcshell/node-http2/example/client.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/testing/xpcshell/node-http2/example/client.js b/testing/xpcshell/node-http2/example/client.js
new file mode 100644
index 0000000000..75a4bc011b
--- /dev/null
+++ b/testing/xpcshell/node-http2/example/client.js
@@ -0,0 +1,48 @@
+var fs = require('fs');
+var path = require('path');
+var http2 = require('..');
+var urlParse = require('url').parse;
+
+// Setting the global logger (optional)
+http2.globalAgent = new http2.Agent({
+ rejectUnauthorized: true,
+ 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();
+ }
+}