-
1 SimpleChannelInboundHandler实现
处理打开、关闭、异常、接收
2 ChannelInitializer<SocketChannel>类的实现
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:一个线程负责连接 、一请求一应答、缺乏弹性伸缩能力(线程数增加后系统性能极具下降);
伪异步IO:线程池负责连接、M请求N连接、线程池可以是线程资源可控(设置最大连接数等)但是会产生线程池阻塞;
NIO:缓冲区Buffer(NIO中的数据读写都是通过缓冲区buffer操作)、通道Channel(可以是双向的,流是单向的)、多路复用器Selector(轮询出就绪状态的Channel的集合,可以进行后续的IO操作,没有最大连接数限制);
AIO:连接注册读写事件和回调函数(事件驱动IO)、读写方法异步(真正的异步非阻塞IO)、主动通知程序
查看全部 -
webSocket生命周期
查看全部 -
bio:一请求一线程 伪异步:线程池 nio:缓冲区buffer查看全部
-
客户端个数:
BIO(同步阻塞IO):一比一
伪异步IO(同步阻塞IO):M比N
NIO(同步非阻塞):M比1
AIO(异步非阻塞):M比0,不需要启动额外线程,被动回调
查看全部 -
存储整个工程的全局配置
public class NettyConfig{
存储每一个客户端接入进来时的channel对象
public static ChannelGroup group = new DefaultChannelGroup(GlobalEventExector.INSTAnce)
}
查看全部 -
WebSocket关闭连接
服务器关闭底层TCP连接
客户端发起TCP Close
查看全部 -
WebSocket生命周期
打开事件
消息事件
错误事件
关闭事件
查看全部 -
WebSocket建立连接
客户端发起握手请求
服务器响应请求
连接建立
查看全部 -
WebSocket的优点:
节省通信开销
服务器主动传送数据给客户端
实时通信
查看全部 -
Netty的优势
查看全部 -
AIO通信:
连接注册读写事件和回调函数
读写方法异步
主动通知程序
查看全部 -
NIO通信:
缓冲区Buffer负责读/写数据
通道Channel读写同时进行
多路复用器Selector轮询一个或多个Channel是否可读、可写
NIO没有最大连接数限制,可以接入成千上万个客户端
查看全部 -
伪异步IO通信:线程池负责连接,M请求N应答,可能造成线程池阻塞
查看全部 -
BIO通信:一个线程负责连接,一请求一应答,缺乏弹性伸缩能力
查看全部
举报