前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ChannelHandler之间处理数据格式转换与Netty自带的Channelhandler

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

作者头像
爬蜥
发布2019-07-09 11:19:07
1.1K0
发布2019-07-09 11:19:07
举报

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

ByteToMessageDecoder继承ChannelInboundHandlerAdapter

MessageToByteEncoder继承ChannelOutboundHandlerAdapter

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

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

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

Netty中有哪些自带的ChannelHandler?

  1. SslHandler:负责对请求进行加密和解密,是放在ChannelPipeline中的第一个ChannelHandler
  1. 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进行大型文件传输】
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Netty中有哪些自带的ChannelHandler?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档