专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

ChannelHandler之间处理数据格式转换与Netty自带的Channelhandler

Netty实现数据格式转换的方式是继承实现ByteToMessageDecoder和MessageToByteEncoder。

ByteToMessageDecoder继承ChannelInboundHandlerAdapter

MessageToByteEncoder继承ChannelOutboundHandlerAdapter

ByteToMessageDecoder在数据流转过程中承担角色如下所示:

93_1.png

MessageToByteEncoder在数据流转过程中承担角色如下所示:

93_2.png

1、 如果需要做数据格式的转换,可以使用MessageToMessageDecoder和MessageToMessageEncoder;
2、 如果需要处的ByteBuf太长,可以抛出TooLongFrameException;
3、 如果需要一个类实现编码和解码可以对应实现ByteToMessageCodec和MessageToMessageCodec
4、 如果一类实现编码和解码觉得耦合严重,可以使用CombinedChannelDuplexHandler

Netty中有哪些自带的ChannelHandler?

1、 SslHandler:负责对请求进行加密和解密,是放在ChannelPipeline中的第一个ChannelHandler 93_3.png
2、 HttpClientCodec和HttpServerCodec:HttpClientCodec负责将请求字节解码为HttpRequest、HttpContent和LastHttpContent消息,以及对应的转为字节;HttpServerCodec负责服务端中将字节码解析成HttpResponse、HttpContent和LastHttpContent消息,以及对应的将它转为字节

HttpServerCodec 里面组合了HttpResponseEncoder和HttpRequestDecoder

HttpClientCodec 里面组合了HttpRequestEncoder和HttpResponseDecoder

1、 HttpObjectAggregator: 负责将http聚合成完整的消息,而不是原始的多个部分
2、 HttpContentCompressor和HttpContentDecompressor:HttpContentCompressor用于服务器压缩数据,HttpContentDecompressor用于客户端解压数据
3、 IdleStateHandler:连接空闲时间过长,触发IdleStateEvent事件
4、 ReadTimeoutHandler:指定时间内没有收到任何的入站数据,抛出ReadTimeoutException异常,并关闭channel
5、 WriteTimeoutHandler:指定时间内没有任何出站数据写入,抛出WriteTimeoutException异常,并关闭channel
6、 DelimiterBasedFrameDecoder:使用任何用户提供的分隔符来提取帧的通用解码器
7、 FixedLengthFrameDecoder:提取在调用构造函数时的定长帧
8、 ChunkedWriteHandler:将大型文件从文件系统复制到内存【DefaultFileRegion进行大型文件传输】

文章永久链接:https://tech.souyunku.com/47289

未经允许不得转载:搜云库技术团队 » ChannelHandler之间处理数据格式转换与Netty自带的Channelhandler

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们