用java写个简单的直播强求_全网最简单易懂的Netty入门示例,再不会用Netty我直播吃翔...
//server引導類
ServerBootstrap serverBootstrap = new ServerBootstrap();
//boss 對應 IOServer.java 中的接受新連接線程,主要負責創建新連接
NioEventLoopGroup boss = new NioEventLoopGroup();
//worker 對應 IOServer.java 中的負責讀取數據的線程,主要用于讀取數據以及業務邏輯處理
NioEventLoopGroup worker = new NioEventLoopGroup();
//要啟動一個Netty服務端,必須要指定三類屬性,分別是線程模型、IO 模型、連接讀寫處理邏輯
serverBootstrap
//group方法指定線程模型,線程模型包括三種單線程模型,多線程模型,主從線程模型,這里是主從線程模型
.group(boss, worker)
//channel方法指定IO模型,NioServerSocketChannel代表NIO,OioServerSocketChannel代表BIO
.channel(NioServerSocketChannel.class)
//childHandler方法會創建一個ChannelInitializer,ChannelInitializer主要就是定義后續每條連接的數據讀寫,業務處理邏輯
.childHandler(new ChannelInitializer() {
@Override
protected void initChannel(NioSocketChannel ch) {
ch.pipeline().addLast(new StringDecoder());
ch.pipeline().addLast(new SimpleChannelInboundHandler() {
@Override
protected void channelRead0(ChannelHandlerContext ctx, String msg) {
System.out.println(msg);
}
});
}
})
//handler方法用于指定在服務端啟動過程中的一些邏輯,通常情況下呢,我們用不著這個方法
//.handler()
//attr方法可以給服務端的channel,也就是NioServerSocketChannel指定一些自定義屬性,然后我們可以通過channel.attr()取出這個屬性
//.attr()
//childAttr方法可以給每一條連接指定自定義屬性,然后后續我們可以通過channel.attr()取出該屬性
//.childAttr()
//childOption方法可以給每條連接設置一些TCP底層相關的屬性,ChannelOption.SO_KEEPALIVE表示是否開啟TCP底層心跳機制,true為開啟,ChannelOption.TCP_NODELAY表示是否開啟Nagle算法,true表示關閉,false表示開啟,通俗地說,如果要求高實時性,有數據發送時就馬上發送,就關閉,如果需要減少發送次數減少網絡交互,就開啟
//.childOption()
//option方法服務端channel設置一些屬性,最常見的就是so_backlog,ChannelOption.SO_BACKLOG,表示系統用于臨時存放已完成三次握手的請求的隊列的最大長度,如果連接建立頻繁,服務器處理創建新連接較慢,可以適當調大這個參數
//.option()
.bind(8000);復制代碼
總結
以上是生活随笔為你收集整理的用java写个简单的直播强求_全网最简单易懂的Netty入门示例,再不会用Netty我直播吃翔...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南昌治疗无精症最好的医院推荐
- 下一篇: 地下城鬼剑士无影剑号可卖多少