如何通过node.js构build通过TCP发送的消息?

我需要从一个node.js TCP服务器发送一个JSONstring到多个TCP客户端。

为了从客户端的套接字/stream读取消息,我需要做一些消息框架。 一种方法是将消息的长度作为数组前缀,然后将其转换为客户端消息的缓冲区大小。

我怎么会在服务器上的node.js / javascript中做这样的事情,然后在客户端使用.NET客户端读出来?

鉴于这个客户端代码,我将如何在服务器端使用JavaScript /节点正确构造消息?

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); 

为了在nodejs中取消input数据,您可以尝试使用node-bufferlist或node-buffers,或手动创build您自己的FSM ,并将其与传入的数据块

服务器端更简单:

 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); } 

或者你可以使用节点v0.5 + buffer.writeUInt32