Ну, net это просто интерфейс к TCP. Для отправки и получения сообщений вам необходимо разработать и внедрить собственный протокол поверх TCP. TCP является потоковым протоколом, а не ориентированным на сообщения. Это означает, что вы должны изобрести способ для читателя разделять сообщения. Самый простой способ отделить сообщения - вставить \ n символы между ними. Самый простой способ кодировать сообщения в виде байтового потока - это использовать JSON.stringify. Итак:
client.js
var Lazy = require('lazy'), net = require('net')
var client = net.createConnection(8000)
new Lazy(client).lines.forEach(function (msg)
{
console.log(JSON.parse(msg))
})
server.js
var net = require('net')
var server = net.createServer(function(socket) {
socket.on("connect",function() {
var str = JSON.stringify({foo : 'test', msg : 'did you get it ?'}) + "\n"
socket.write(str)
});
}).listen(8000);
Вы можете начать с этого и уточнить. Например, вы можете использовать библиотечный класс EventEmitter на стороне получателя и генерировать разные события при получении разных сообщений.
Модуль 'lazy' доступен в NPM и используется для разделения потока принимаемых байтов на отдельные строки. Расщепление выполнимо вручную, но потребуется еще около 20 строк кода. Посмотрите источники «грязного» модуля NPM для примера реализации разделения - это громоздко, поэтому наличие внешней зависимости в этом случае вполне обосновано.