2

我在一个 API 中为 Netty 设置了这个参数,我需要通过 TCP(启用 SSL)向其发送数据。

LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4))

参数:

  • maxFrameLength - 帧的最大长度。如果帧的长度大于这个值,就会抛出 TooLongFrameException。
  • lengthFieldOffset - 长度字段的偏移量。
  • lengthFieldLength - 长度字段的长度。
  • lengthAdjustment - 添加到长度字段值的补偿值。
  • initialBytesToStrip - 从解码帧中剥离的第一个字节数。

我有需要发送的消息(字符串),但由于以下原因被拒绝:错误消息“调整后的帧长度超过 1048576:2065855613”

那么问题来了,如何在ruby中为消息设置一个frame来满足Netty的参数呢?

4

1 回答 1

1

您的问题是您没有在消息中指定帧字段长度。十进制数 2065855613 在 ASCII 中是 {"t},它看起来像 JSON 消息开头的前几个字节。

然后解决方案是确保将 4 字节的消息长度附加到消息的开头(不包括长度字段本身的长度)。

于 2015-09-16T19:19:33.320 回答