netty in action 中WebSocket章节demo实现

代码详情:

https://github.com/wangmingyangid/netty01

通过定义如下几个Handler实现该功能:

1. HttpServerCodec

将字节解码为 HttpRequest、HttpContent 和 LastHttpContent。并将 HttpRequest、HttpContent 和 LastHttpContent 编码为字节。

2. ChunkedWriteHandler

写入一个文件的内容(在文件需要进行加解密和压缩时使用)

3 . HttpObjectAggregator

将一个 HttpMessage 和跟随它的多个 HttpContent 聚合 为单个 FullHttpRequest 或者 FullHttpResponse(取 决于它是被用来处理请求还是响应)。

安装了这个之后, ChannelPipeline 中的下一个 ChannelHandler 将只会 收到完整的 HTTP 请求或响应

4.  HttpRequestHandler

处理 FullHttpRequest(那些不发送到/ws URI 的请求)

5.  WebSocketServerProtocolHandler

按照 WebSocket 规范的要求,处理 WebSocket 升级握手、 PingWebSocketFrame 、 PongWebSocketFrame 和 CloseWebSocketFrame

6. TextWebSocketFrameHandler

处理 TextWebSocketFrame 和握手完成事件

 

WebSocket 协议升级之前的 ChannelPipeline 的状态如图

当 WebSocket 协议升级完成之后,WebSocketServerProtocolHandler 将会把 HttpRequestDecoder替换 为 WebSocketFrameDecoder,

把 HttpResponseEncoder 替换为 WebSocketFrameEncoder。为了性能最大化,它将移除任何不再被 WebSocket 连接所需要的 ChannelHandler。

这也包括了图 12-3 所示的 HttpObjectAggregator 和 HttpRequestHandler。

 

图12-4 展示了这些操作完成之后的ChannelPipeline

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值