micro850通讯协议msg_Netty实战 IM即时通讯系统(十一)pipeline与channelHandler

Netty实战 IM即时通讯系统(十一)pipeline与channelHandler

零、 目录

  1. IM系统简介
  2. Netty 简介
  3. Netty 环境配置
  4. 服务端启动流程
  5. 客户端启动流程
  6. 实战: 客户端和服务端双向通信
  7. 数据传输载体ByteBuf介绍
  8. 客户端与服务端通信协议编解码
  9. 实现客户端登录
  10. 实现客户端与服务端收发消息
  11. pipeline与channelHandler
  12. 构建客户端与服务端pipeline
  13. 拆包粘包理论与解决方案
  14. channelHandler的生命周期
  15. 使用channelHandler的热插拔实现客户端身份校验
  16. 客户端互聊原理与实现
  17. 群聊的发起与通知
  18. 群聊的成员管理(加入与退出,获取成员列表)
  19. 群聊消息的收发及Netty性能优化
  20. 心跳与空闲检测
  21. 总结
  22. 扩展

一、 简介

  1. 这一小节中 , 我们来学习Netty 中一大核心组件: pipeline 与 channelHandler
  2. 上一小节最后 , 我们提出: 如何避免switch-case 泛滥? , 我们注意到, 不管是服务端还是客户端 , 处理流程大致分为以下步骤
5c38763bf9cfd4f1b4b04fa5d5b6cefc.png
  1. 我们把这三类逻辑都写在一个类里面, 客户端写在 ClientHandler , 服务端写在 ServerHandler , 如果要做功能的扩展 (比如 , 我们要校验魔数 , 或者其他特殊逻辑) , 只能在一个类里面去修改 , 这个类就会变得越来越臃肿。
  2. 另外 , 我们注意到, 每次发指令数据包都要是都调用编码器编码成byteBuf , 对于这类场景的编码优化, 我们能想到的办法自然是模块化处理 , 不同的逻辑放置到单独的类中来处理 , 最后将这些逻辑串联起来 , 形成一个完整的逻辑处理链 。
  3. Netty中的pipeline 与channelHandler 正是来解决这个问题的: 他通过责任链设计模式来组织代码逻辑 , 并且能够支持逻辑的动态添加和删除 , Netty能够支持各类协议的支持和扩展 , 比如: HTTP , WebSocket ,Redis 靠的就是pipeline与channelHanler。

二、 pipeline 与channelHandler 的构成

a679a3f646d7d8ab0b459911947e5d79.png
  1. 无论是从服务端来看 , 还是从客户端来看 , 在Netty整个框架中, 一条连接对应着一个channel ,这个channel 所有的处理逻辑都在一个叫做ChannelPipeline的对象里面 , ChannelPipeline 是一个双向链表结构 , 他和Channel之间是一对一的关系
  2. ChannelPipeline 里面每个节点都是一个ChannelHandlerContext 对象 ,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值