HttpServerCodec是最終類,不可繼承。websocket協議本身是基於http協議的,所以也可以使用http解編碼器
HttpServerCodec的功能有兩個:HttpRequestDecoder和HttpResponseEncoder,即在pipline.addLast時要麼開始就添加一個HttpServerCodec,或HttpRequestDecoder和HttpResponseEncoder分開添加。所以分析HttpServerCodec就是分析HttpRequestDecoder和HttpResponseEncoder。
結合HttpObjectAggregator看看如何操作http協議。從上可以看出,當我們用POST方式請求服務器的時候,對應的參數信息是保存在message body
中的,如果只是單純的用HttpServerCodec
是無法完全的解析Http POST請求的,因爲HttpServerCodec
只能獲取uri中參數,所以需要加上HttpObjectAggregator
HttpObjectAggregator是Http消息聚合器,Aggregator這個單次就是“聚合,聚集”的意思。http消息在傳輸的過程中可能是一片片的消息片端,所以當服務器接收到的是一片片的時候,就需要HttpObjectAggregator來把它們聚合起來。
它的作用是將多個消息轉換成單一的FullHttpRequest 或者 FullHttpResponse,原因是HTTP解碼器 在每個HTTP消息中會生成多個消息對象。