我写了一个 node/ssjs 程序,它使:
- Tcp 连接到数据服务器(Apache MIMA),使用 TLS 模块。(好的)
- 通过protobuffer模块编码/解码(序列化/反序列化)消息..(OK)
- 将序列化消息发送到服务器并获得响应。(不好)。
服务器的手册类型:
Structure of message:
[ Length | Header length | Header (| Body length |Body) ]
Length – message length = fixed size (4 bytes). Note that this is only the size of
following message (not the prefix itself);
Header length – fixed size (4 bytes);
Header – contains message metadata (e.g. messageId);
Body length – fixed size (4 bytes, optional). If body is not required, body size is
not serialized. In such case, message is 4 (message length) + 4
(header length) + length(header) bytes long.
Body – the message payload (optional). If body is not present (e.g. response
notification without data) it is not serialized.
Length [bytes] Content
4 Whole message length
4 Header message length (H_LEN)
H_LEN Protocol Buffers encoded MessageHeaderProto
4 Body message length (B_LEN), optional
B_LEN Protocol Buffers encoded Message
我的问题是:
- 如何获得 protobuffer 的 4 字节长度?
- 如何在发送之前连接这些缓冲区?
- 如何发送?
- 可以用 JavaScript 做吗?观察:服务器使用Little Endian字节顺序,客户端也使用。
谢谢你们...