跟闪电侠学Netty:Netty即时聊天实战与底层原理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 Netty

本书使用Netty统一的IO[1]读写API以及强大的Pipeline来编写业务处理逻辑,在后续章节中,会通过即时聊天系统这个例子,带大家逐步了解Netty以下核心知识点。

● 如何启动服务端?

● 如何启动客户端?

● 数据载体ByteBuf。

● 如何设计长连自定义协议?

● 拆包/粘包原理与实践。

● 如何实现自定义编解码?

● 如何使用Pipeline与ChannelHandler?

● 如何定时发心跳数据包?

● 如何进行连接空闲检测?

1.5.1 客户端使用Netty的程序逻辑结构

下图展示了客户端使用Netty的程序逻辑结构。

1.客户端会解析控制台指令,比如发送消息或者建立群聊等指令。

2.客户端会基于控制台的输入创建一个指令对象,用户告诉服务端具体要干什么事情。

3.TCP通信需要的数据格式为二进制,因此,接下来通过自定义二进制协议将指令对象封装成二进制,这一步被称为协议的编码。

4.对于收到服务端的数据,首先需要截取出一段完整的二进制数据包(拆包/粘包相关的内容后续小节会讲解)。

5.将此二进制数据包解析成指令对象,比如收到消息。

6.将指令对象送到对应的逻辑处理器来处理。

1.5.2 服务端使用Netty的程序逻辑结构

服务端使用Netty的程序逻辑结构与客户端非常类似,如下图所示,这里不再赘述。