近来在做项目的时候,遇到了一个消息推送的功能,百度了一下,主要有几种方法:

  1.前端轮询发出请求,后端返回数据

  2.前端与后端建立一个长连接

第一种方法未免太暴力,而且对数据库后台的消耗也很大,最后就是抱着学习新框架,抱着学习网络框架的心,选了第二种

好,我用第二种方法,第二种就是主要有下面几种,websocket,NIO,Netty.

  Netty作为新的一个框架,其实有很多RPC框架都以他为载体,比如阿里的dubbo、RocketMQ等。时代一直在进步,人也要进步,就从用Netty开始

  学东西首先从总体认识开始,先知道这个东西可以做什么,然后再慢慢深入....

  Netty一共有4个部分:

    1.channelhandler  这个是处理收入信息的一个类,主要有SignalInboundHandlerAdapter,SignalOutboundHandlerAdapter等,主要用来写我们的业务代码

    2..回调  处理事件。封装了自己的ChannelFuture 不熟的可以先看看Future  https://blog.csdn.net/u014209205/article/details/80598209。ChannelFuture可以添加监听事件,这是一个异步事件,如下代码是绑定服务启动端口。同时加了个异步的消息监听器,绑定6666端口,完成之后打印6666

            这里顺便复习了一下观察者模式:观察者模式通过给在观察者用一个数据结果比如hashmapp保存所有的响应者,当有某种条件达成时便会遍历数据结构里的所有响应对象,执行相应的方法

 

this.channelFuture = serverBootstrap.bind(6666).sync();
            channelFuture.addListener(new ChannelFutureListener() {
                @Override
                public void operationComplete(ChannelFuture channelFuture) throws Exception {
                    System.out.println("6666");
                }

            });

 

    3.  Channel   channel拥有一个EVENTLOOP,就是一个现程,通过channelpineline可以给channel添加处理器

    下一篇再详细分析每一项