我在一个 API 中为 Netty 设置了这个参数,我需要通过 TCP(启用 SSL)向其发送数据。
LengthFieldBasedFrameDecoder(1048576, 0, 4, 0, 4))
参数:
- maxFrameLength - 帧的最大长度。如果帧的长度大于该值,将抛出 TooLongFrameException。
- lengthFieldOffset - 长度字段的偏移量。
- lengthFieldLength - 长度字段的长度。
- lengthAdjustment - 添加到长度字段值的补偿值。
- initialBytesToStrip - 要从解码帧中剥离的第一个字节数。
我有消息(字符串)需要发送,但由于以下原因被拒绝: 错误消息“调整后的帧长度超过 1048576:2065855613”
那么问题来了,ruby中的message怎么设置frame才能满足Netty的参数呢?
最佳答案
您的问题是您没有在消息中指定帧字段长度。 十进制数 2065855613 在 ASCII 中是 {"t},看起来像 JSON 消息开头的前几个字节。
解决方案是确保将 4 字节的消息长度附加到消息的开头(不包括长度字段本身的长度)。
关于java - ruby 在 Netty 中为 LengthFieldBasedFrameDecoder 参数构建一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32596807/