夜光序言:
生活不可能像你想象得那么好,但也不会像你想象地那么糟。我觉得人的脆弱和坚强都超乎自己的想象。
正文:二十七、Netty
1.什么是Netty?
Netty是高性能事件驱动、异步非阻塞的java开源框架。
Netty基于NIO的客户端,服务端的编程框架,具有稳定性和伸缩性。
2.Netty的使用场景
高性能领域
多线程并发领域
异步通信领域
3.IO通信
1.BIO通信
一个线程负责连接
一请求一应答
缺乏弹性伸缩能力
2.伪异步IO通信
线程池负责连接
M请求N应答
线程池阻塞
3.NIO通信
缓冲区buffer
通道channel
多路复用器selector
4.AIO通信
连接注册读写事件和回调函数
读写方法异步
主动通知程序
4.原生NIO的缺陷
类库和API繁杂
入门门槛高
工作量和难度大
JDK NIO存在BUG
5.Netty的优势
API简单
入门门槛低
性能高
成熟、稳定
6.什么是webSocket?
H5协议规范、握手机制,解决客户端与服务端实时通信而产生的技术
7.webSocket的优势
节省通信开销
服务器主动传送数据给客户端
实时通信
8.webSocket建立连接
1.客户端发起握手请求
2.服务端端响应请求
3.连接建立
9.webSocket生命周期
1.打开事件
2.消息事件
3.错误事件
4.关闭事件
10.webSocket连接关闭
服务器关闭底层TCP连接
客户端发起TCP close
11.Netty实现webSocket通信
1.Netty开发服务端
2.HTML实现客户端
3.实现服务端与客户端的实时交互