为了账号安全,请及时绑定邮箱和手机立即绑定

Netty入门之WebSocket初体验

难度中级
时长 1小时20分
学习人数
综合评分8.40
38人评价 查看评价
8.6 内容实用
8.6 简洁易懂
8.0 逻辑清晰
  • aio通信模型

    查看全部
    0 采集 收起 来源:IO通信

    2019-07-03

  • nio通信模型

    查看全部
    0 采集 收起 来源:IO通信

    2019-07-03

  • 伪异步io通信模型

    查看全部
    0 采集 收起 来源:IO通信

    2019-07-03

  • bio通信模型

    查看全部
    0 采集 收起 来源:IO通信

    2019-07-03

  • bio相关概念

    查看全部
    0 采集 收起 来源:IO通信

    2019-07-03

  • epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外,还提供了边缘触发(Edge Triggered),这就使得用户空间程序有可能缓存IO状态,减少epoll_wait/epoll_pwait的调用,提高应用程序效率。

    查看全部
    0 采集 收起 来源:IO通信

    2019-04-28

  • BIO通信:服务端接收到客户端的请求之后,为每一个客户端创建一个线程进行处理,通过输出流把应答发送给客户端,最后销毁线程。(1对1,阻塞同步的IO)

    伪异步IO通信:当有新的客户端接入的时候,将客户端的socket封装成一个task投递到后端的线程池进行处理,线程池维护一个消息队列和N个活跃的线程,对消息队列中的任务进行相关的处理。(M对N,阻塞同步的IO)

    NIO通信:在面向流的IO中可以将数据直接写入或者将数据直接读到Stream对象中,在NIO中,所有数据都是用缓冲区进行处理的,在读取数据时,直接读缓冲区中,在写入数据时,是直接写入缓冲区中。任何时候处理NIO中的数据时都是通过缓冲区进行操作。网络数据通过Channel读取和写入。selector提供了选择已经就绪的任务的能力,会通过不断轮询在其上的Channel,在某个Channel上面发生读或者写事件,则该Channel处于就绪状态,会被Selector轮询出来,然后获取Channel的集合进行后续的操作。(M对1,非阻塞同步的IO)

    AIO通信:AIO的异步套接自通道,是真正的异步非阻塞IO,对应于Unix网络编程中的事件驱动IO,不需要通过多路复用器对被注册的通道进行轮询操作即可实现异步读写,从而简化NIO的编程模型。(M对0,非阻塞异步IO)


    查看全部
    0 采集 收起 来源:IO通信

    2019-04-18

  • 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)、主动通知程序


    查看全部
    0 采集 收起 来源:IO通信

    2019-03-04

  • webSocket生命周期

    https://img1.sycdn.imooc.com//5c6f74640001501813020544.jpg

    查看全部
    0 采集 收起 来源:WebSocket入门

    2019-02-22




  • 客户端个数:

    BIO(同步阻塞IO):一比一

    伪异步IO(同步阻塞IO):M比N

    NIO(同步非阻塞):M比1

    AIO(异步非阻塞):M比0,不需要启动额外线程,被动回调


    查看全部
    0 采集 收起 来源:IO通信

    2019-01-16

  • 存储整个工程的全局配置

    public class NettyConfig{

    存储每一个客户端接入进来时的channel对象

    public static ChannelGroup group = new DefaultChannelGroup(GlobalEventExector.INSTAnce)

    }


    查看全部
  • WebSocket关闭连接

      服务器关闭底层TCP连接

    客户端发起TCP Close

    查看全部
    0 采集 收起 来源:WebSocket入门

    2019-01-16

  • WebSocket生命周期

    • 打开事件

    • 消息事件

    • 错误事件

    • 关闭事件

    查看全部
    0 采集 收起 来源:WebSocket入门

    2019-01-02

  • WebSocket建立连接

    • 客户端发起握手请求

    • 服务器响应请求

    • 连接建立

    查看全部
    0 采集 收起 来源:WebSocket入门

    2019-01-02

举报

0/150
提交
取消
课程须知
本课程是Java中高级课程,需熟练掌握Java基本语法和Java IO通信
老师告诉你能学到什么?
1、IO通信 2、原生IO的缺陷和Netty的优势 3、WebSocket生命周期 4、Netty实现WebSocket

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!