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

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
  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进行大型文件传输】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值