¿Cómo enmarco los mensajes para enviar a través de TCP con node.js?

Necesito enviar una cadena JSON a un número de clientes TCP desde un servidor de nodo.js TCP.

Para leer los mensajes del socket / flujo en el lado del cliente, necesito hacer algún tipo de encuadre de mensajes. Una forma de hacer esto es prefijar el mensaje con la longitud del mensaje como una matriz, y luego convertirlo al tamaño del búfer para el mensaje en el lado del cliente.

¿Cómo podría hacer algo como esto en node.js / javascript en el servidor y luego leerlo en el lado del cliente utilizando un cliente .NET?

Dado este código del lado del cliente, ¿cómo puedo encuadrar el mensaje correctamente en el lado del servidor usando javascript / node?

TcpClient client = new TcpClient(server, port); var netStream = client.GetStream(); // read the length of the message from the first 4 bytes byte[] b = new byte[4]; netStream.Read(b, 0, b.Length); int messageLength = BitConverter.ToInt32(b, 0); // knowing the length, read the rest of the message byte[] buffer = new byte[messageLength]; netStream.Read(buffer, b.Length, buffer.Length); var message = System.Text.Encoding.UTF8.GetString(buffer); 

para desenmarcar datos entrantes en nodejs puede intentar usar node-bufferlist o node-buffers o crear su propio FSM manualmente y alimentarlo con fragmentos de datos entrantes

lado del servidor es más simple:

 function sendPacket(stream, buffer) { var prefix = new Buffer(4); var length = buffer.length; var offset = 0; // serialize 32bit little endian unsigned int prefix[offset++] = length & 0xff; prefix[offset++] = (length >> 8) & 0xff ); prefix[offset++] = (length >> 16) & 0xff ); prefix[offset++] = (length >> 24) & 0xff ); stream.write(prefix); stream.write(buffer); } 

o puede usar el nodo v0.5 + buffer.writeUInt32