ruby为Netty

时间:2015-09-15 22:34:59

标签: java ruby tcp netty raw-data

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

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

参数:

  • maxFrameLength - 帧的最大长度。如果帧的长度大于此值,则抛出TooLongFrameException。
  • lengthFieldOffset - 长度字段的偏移量。
  • lengthFieldLength - 长度字段的长度。
  • lengthAdjustment - 要添加到length字段值的补偿值。
  • initialBytesToStrip - 从解码帧中去除的第一个字节数。

我有消息(字符串)我需要发送它们因为以下原因而被拒绝: 错误消息"调整后的帧长度超过1048576:2065855613"

所以问题是,如何在ruby中为消息设置框架以满足Netty的参数?

1 个答案:

答案 0 :(得分:1)

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

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