接上一篇文件的项目继续讲解:Netty的深入浅出--1.项目初次尝试

在浏览器中可能会发送两次请求:

Netty的深入浅出--2.回调与channel流程执行

Netty的深入浅出--2.回调与channel流程执行 

Netty的深入浅出--2.回调与channel流程执行 

上面可以看到我们控制台打印了两次,说明浏览器客户端向后台发送了两次请求,而两次请求分别是:一个是我们的地址请求,一个是浏览器自身向后台请求网站图标

 Netty的深入浅出--2.回调与channel流程执行

 Netty的深入浅出--2.回调与channel流程执行

解决办法:对请求进行判断,如果是favicon.ico请求就退出不执行后面的

Netty的深入浅出--2.回调与channel流程执行 

 再次运行:

Netty的深入浅出--2.回调与channel流程执行

 Netty的深入浅出--2.回调与channel流程执行

 由于自定义处理器继承的是SimpleChannelInboundHandlerNetty的深入浅出--2.回调与channel流程执行

SimpleChannelInboundHandler继承于ChannelInitialzer

Netty的深入浅出--2.回调与channel流程执行 

然后我们重写他们的方法,以此来让我们进一步分析Netty:

Netty的深入浅出--2.回调与channel流程执行

重写方法,观察其执行顺序:

Netty的深入浅出--2.回调与channel流程执行 

修改一下:

Netty的深入浅出--2.回调与channel流程执行 

Netty的深入浅出--2.回调与channel流程执行 

浏览器调用(会发现服务器一直在运行,没有停止): 

Netty的深入浅出--2.回调与channel流程执行 

 问题出现了,执行了registered没有执行unregistered,原因在于请求在该管道处理器处理完之后,还会一直等待下一个请求,因此需要我们每次请求完毕之后手动去关闭

Netty的深入浅出--2.回调与channel流程执行

再一次重新启动和请求:

Netty的深入浅出--2.回调与channel流程执行 

判断msg的类型:

Netty的深入浅出--2.回调与channel流程执行 

浏览器运行(为什么是这样的话,后面再做具体讲解):

Netty的深入浅出--2.回调与channel流程执行  

可以获取远程地址:

Netty的深入浅出--2.回调与channel流程执行

Netty的深入浅出--2.回调与channel流程执行 

 

相关文章: