1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const assert = require('assert'); 7const h2 = require('http2'); 8 9const server = h2.createServer(); 10 11// We use the lower-level API here 12server.on('stream', common.mustCall((stream, headers, flags) => { 13 let data = ''; 14 stream.setEncoding('utf8'); 15 stream.on('data', (chunk) => data += chunk); 16 stream.on('end', common.mustCall(() => { 17 assert.strictEqual(data, 'some data more data'); 18 })); 19 stream.respond(); 20 stream.end('ok'); 21})); 22 23server.listen(0, common.mustCall(() => { 24 const client = h2.connect(`http://localhost:${server.address().port}`); 25 26 const req = client.request({ ':method': 'POST' }); 27 req.write('some data '); 28 req.end('more data'); 29 30 req.on('response', common.mustCall()); 31 req.resume(); 32 req.on('end', common.mustCall()); 33 req.on('close', common.mustCall(() => { 34 server.close(); 35 client.close(); 36 })); 37})); 38