Netty對socket的抽象

傳統socket

首先還是先了解下傳統socket下的通信流程

圖片描述

流程很清晰,細節不講太多。

Netty抽象

在netty中步驟1監聽端口對應就是NioEventLoop,即事件循環,這裏的循環包括兩個部分,一個是新連接的接入,而另一個則是當前存在連接的數據流的讀寫。

接着接到一個新用戶的連接,而其在java底層是作爲Socket來處理,即在IO下是socket,NIO下是SocketChannel,而Netty將其自定義封裝爲Channel,基於此Channel,一系列的讀寫都可以在其連接上工作。(對Socket的抽象)

服務端接收數據流的載體都是基於ByteBuf,ByteBuf封裝了許多高可用的API,我們可以基於這些API與底層數據流做通信。

當數據流到達服務端後,服務端需要處理一些業務邏輯,這時就是ChannelHandler。我們也可以自定義Java對象,在ChannelHandler中做處理,數據包的分包、不同類型數據包的Java轉換。

數據流的寫出也是基於ByteBuf。

ChannelHandler是一個列的形式。Netty將這些邏輯串了起來,讓用戶方便的對業務做處理。

圖片描述

相關項目

關於Netty的產品導向項目 UncleCatMySelf/SBToNettyChat


如果本文對你有所幫助,歡迎關注本人技術公衆號,謝謝。
圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章