net.Server класс

Server#

server.js
const net = require('net');
const stream = require('stream');
const server = net.createServer(socket => {
const clientInfo = `${socket.remoteAddress}:${socket.remotePort}`;
console.log(`+ ${clientInfo} - connected`);
socket.write('Echo server\r\n');
socket
.pipe(new ToUpperCaseTransform()) // convert client messages to upper case
.pipe(socket); // forwards uppercased text back to client
socket.on('data', message => {
process.stdout.write(`> ${clientInfo} : ${message}`);
})
socket.on('close', () => {
console.log(`- ${clientInfo} - closed`)
})
});
server.listen(1337, '127.0.0.1');
class ToUpperCaseTransform extends stream.Transform {
constructor() {
super()
}
_transform(chunk, enc, done) {
this.push(chunk.toString().toUpperCase())
done();
}
}

Проверить работу сервера можно в консоли с помощью netcat.

netcat 127.0.0.1 1337

Далее, введя текст в netcat после enter-а сервер должен прислать этот-же текст в верхнем регистре.

Client#

client.js
const net = require('net');
const client = new net.Socket();
// node server.js -i
const interactive = process.argv[2] === '-i'
client.connect(1337, '127.0.0.1', () => {
console.log('> Connected with port ', client.localPort);
client.write('Hello, server! Love, Client.\n');
if (interactive) {
process.stdin.pipe(client);
} else {
client.end(); // lets server to know, that's all
}
});
client.on('data', data => {
console.log(data.toString());
});
client.on('close', () => {
console.log('> Connection closed');
});

Еще примеры работы с модулем net