gpt4 book ai didi

java - Netty 中的 Channel.messageReceived 事件

转载 作者:行者123 更新时间:2023-12-01 15:26:05 25 4
gpt4 key购买 nike

在使用 Netty Channels 的基于 TCP 的服务器-客户端模型中,来自服务器的 Channel.write() 数量与相应的 Channel.messageReceived()< 之间是否存在对应关系 在接收客户端上?如果我在发送方上执行 10 次 writes() 是否意味着将在监听客户端上调用 messageReceived() 10 次?或者 Netty 可以将发送的数据(来自发送方的 write() )聚合为客户端上或多或少的 messageReceived() 事件?有没有办法在 Netty 中配置此行为?

最佳答案

不保证 Channel.write(..) 和 messageReceived 调用具有 1:1 映射。您需要使用一些 FrameDecoder 子类(也许您自己编写),它将缓冲 ChannelBuffer,直到您收到足够的数据以将消息分派(dispatch)到服务器上 ChannelPipeline 中的下一个 ChannelHandler。

Netty 已经附带了一些现成的 FrameDecoder 实现,例如 DelimiterBasedFrameDecoder(例如),它将负责缓冲数据,直到收到 Delimiter,然后将其分派(dispatch)到 ChannelPipeline 中的下一个处理程序。

有关更多详细信息,请参阅 [1]。

[1] http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/frame/FrameDecoder.html

关于java - Netty 中的 Channel.messageReceived 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com