const console = require('console');
const net = require('net');
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();
});
})
.on('listening', () => {
const chunks = [];
const req = new net.Socket()
.on('error', console.error)
.on('connect', () => {
const requestBody = Buffer.from('Hello!!!');
req.write(Buffer.from([
'POST / HTTP/1.1',
'Content-Type: text/plain',
`Content-Length: ${requestBody.length}`,
'\r\n',
].join('\r\n')));
req.write(requestBody);
})
.on('data', (chunk) => {
chunks.push(chunk);
console.log(`${chunk}`);
})
.once('req', () => console.log('req end'))
.connect(server.address().port, '127.0.0.1');
})
.listen(3000);