-
1 SimpleChannelInboundHandler實現(xiàn)
處理打開、關(guān)閉、異常、接收
2?ChannelInitializer<SocketChannel>類的實現(xiàn)
initChannel(SocketChannel)
e.pipeline().addLast("http-codec",new HttpServerCodec());
e.pipeline()addLast("aggregator", new HttpObjectAggregator(65536);
e.pipeline().addLast("http-chunked",new ChunkedWriterHandler());
e.pipeline().addLast("handler",new MyWebSocketHandler());
websocket啟動類,用EventLoopGroup、ServerBootstrap
ServerBootstrap b=new ServerBootstrap();
b.group(bossGroup,workGroup);
b.channel(NioServerSocketChannel.class);
b.childHandler(new MyWebSocketChannelHandler());
Channel ch=b.bind(8888).sync().channel();
ch.closeFuture().sync();
查看全部 -
java中的IO:BIO、偽異步IO、AIO、NIO
BIO:一個線程負(fù)責(zé)連接 、一請求一應(yīng)答、缺乏彈性伸縮能力(線程數(shù)增加后系統(tǒng)性能極具下降);
偽異步IO:線程池負(fù)責(zé)連接、M請求N連接、線程池可以是線程資源可控(設(shè)置最大連接數(shù)等)但是會產(chǎn)生線程池阻塞;
NIO:緩沖區(qū)Buffer(NIO中的數(shù)據(jù)讀寫都是通過緩沖區(qū)buffer操作)、通道Channel(可以是雙向的,流是單向的)、多路復(fù)用器Selector(輪詢出就緒狀態(tài)的Channel的集合,可以進(jìn)行后續(xù)的IO操作,沒有最大連接數(shù)限制);
AIO:連接注冊讀寫事件和回調(diào)函數(shù)(事件驅(qū)動IO)、讀寫方法異步(真正的異步非阻塞IO)、主動通知程序
查看全部 -
webSocket生命周期
查看全部 -
bio:一請求一線程 偽異步:線程池 nio:緩沖區(qū)buffer查看全部
-
客戶端個數(shù):
BIO(同步阻塞IO):一比一
偽異步IO(同步阻塞IO):M比N
NIO(同步非阻塞):M比1
AIO(異步非阻塞):M比0,不需要啟動額外線程,被動回調(diào)
查看全部 -
存儲整個工程的全局配置
public class NettyConfig{
存儲每一個客戶端接入進(jìn)來時的channel對象
public static ChannelGroup group = new DefaultChannelGroup(GlobalEventExector.INSTAnce)
}
查看全部 -
WebSocket關(guān)閉連接
? 服務(wù)器關(guān)閉底層TCP連接
客戶端發(fā)起TCP Close
查看全部 -
WebSocket生命周期
打開事件
消息事件
錯誤事件
關(guān)閉事件
查看全部 -
WebSocket建立連接
客戶端發(fā)起握手請求
服務(wù)器響應(yīng)請求
連接建立
查看全部 -
WebSocket的優(yōu)點:
節(jié)省通信開銷
服務(wù)器主動傳送數(shù)據(jù)給客戶端
實時通信
查看全部 -
Netty的優(yōu)勢
查看全部 -
AIO通信:
連接注冊讀寫事件和回調(diào)函數(shù)
讀寫方法異步
主動通知程序
查看全部 -
NIO通信:
緩沖區(qū)Buffer負(fù)責(zé)讀/寫數(shù)據(jù)
通道Channel讀寫同時進(jìn)行
多路復(fù)用器Selector輪詢一個或多個Channel是否可讀、可寫
NIO沒有最大連接數(shù)限制,可以接入成千上萬個客戶端
查看全部 -
偽異步IO通信:線程池負(fù)責(zé)連接,M請求N應(yīng)答,可能造成線程池阻塞
查看全部 -
BIO通信:一個線程負(fù)責(zé)連接,一請求一應(yīng)答,缺乏彈性伸縮能力
查看全部
舉報