![跟闪电侠学Netty:Netty即时聊天实战与底层原理](https://wfqqreader-1252317822.image.myqcloud.com/cover/384/43738384/b_43738384.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.5 Netty
本书使用Netty统一的IO[1]读写API以及强大的Pipeline来编写业务处理逻辑,在后续章节中,会通过即时聊天系统这个例子,带大家逐步了解Netty以下核心知识点。
● 如何启动服务端?
● 如何启动客户端?
● 数据载体ByteBuf。
● 如何设计长连自定义协议?
● 拆包/粘包原理与实践。
● 如何实现自定义编解码?
● 如何使用Pipeline与ChannelHandler?
● 如何定时发心跳数据包?
● 如何进行连接空闲检测?
1.5.1 客户端使用Netty的程序逻辑结构
下图展示了客户端使用Netty的程序逻辑结构。
![](https://epubservercos.yuewen.com/6C3355/23020652909769306/epubprivate/OEBPS/Images/txt002_7.jpg?sign=1738888812-dmAXSkC6RUzwW7SvUXJH6CtjqJZJyJOA-0-4057e8e5bb6293653b22c56b9a029d69)
1.客户端会解析控制台指令,比如发送消息或者建立群聊等指令。
2.客户端会基于控制台的输入创建一个指令对象,用户告诉服务端具体要干什么事情。
3.TCP通信需要的数据格式为二进制,因此,接下来通过自定义二进制协议将指令对象封装成二进制,这一步被称为协议的编码。
4.对于收到服务端的数据,首先需要截取出一段完整的二进制数据包(拆包/粘包相关的内容后续小节会讲解)。
5.将此二进制数据包解析成指令对象,比如收到消息。
6.将指令对象送到对应的逻辑处理器来处理。
1.5.2 服务端使用Netty的程序逻辑结构
服务端使用Netty的程序逻辑结构与客户端非常类似,如下图所示,这里不再赘述。
![](https://epubservercos.yuewen.com/6C3355/23020652909769306/epubprivate/OEBPS/Images/txt002_8.jpg?sign=1738888812-jc3E1tC5ulHP9JDRtftHUw47YzUwmnlZ-0-4373899e4efeb90101d22b315f780ac4)