const console = require('console');
const http = require('http');
const server = http.createServer()
.on('error', console.error)
.on('request', (req, res) => {
const chunks = [];
console.log(`req.headers: ${JSON.stringify(req.headers, null, 2)}`);
req
.on('error', console.error)
.on('data', (chunk) => chunks.push(chunk))
.once('end', () => {
const receivedData = Buffer.concat(chunks);
const responseBody = Buffer.concat([
Buffer.from('##START##\n'),
receivedData,
Buffer.from('\n##END##'),
]);
res.writeHead(200, 'GOOD', {
'content-type': 'text/plain',
'content-length': `${responseBody.length}`,
});
res.write(responseBody);
res.end();
});
})
.once('listening', () => {
const requestBody = Buffer.from('Hello!!!');
const req = http.request({
host: '127.0.0.1',
port: server.address().port,
method: 'POST',
headers: {
'content-type': 'text/plain',
'content-length': `${requestBody.length}`,
},
})
.on('error', console.error)
.once('response', (res) => {
console.log(`${res.statusCode} ${res.statusMessage}`);
console.log(`res.headers: ${JSON.stringify(res.headers, null, 2)}`);
const chunks = [];
res
.on('error', console.error)
.on('data', (chunk) => chunks.push(chunk))
.once('end', () => {
console.log(`${Buffer.concat(chunks)}`);
})
});
req.write(requestBody);
req.end();
})
.listen(3000);