前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >张龙netty学习笔记 P4 P5 P6

张龙netty学习笔记 P4 P5 P6

作者头像
平凡的学生族
发布2019-05-25 09:13:29
3970
发布2019-05-25 09:13:29
举报
文章被收录于专栏:后端技术后端技术

比较gradle和maven

  • gradle配置文件基于groovy语言,面向编程语言。
  • maven配置文件基于xml语言 老师建议我们下载安装好gradle,且创建项目时用本地的gradle(不用默认的)。

netty的应用场景

netty可以应用于各种协议:

  1. netty可用作rpc的通信框架
  2. netty可用作长连接的服务器(webSocket)
  3. netty也可作为http的服务器

webSocket中:

  1. 客户端与服务端交互不需要遵循"请求-响应"的模式,可以服务端主动向客户端发送消息。
  2. 发送的消息可以不遵循"header-body"的格式,可以自定义格式

helloWorld搭建

创建EventLoopGroup,一般创建两个(也可以只一个,但效率稍低,不建议)。

代码语言:javascript
复制
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();

bossGroup接收连接请求,并将后续的通信交给workerGroup

代码语言:javascript
复制
ServerBootstrap serverBootstrap = new ServerBootstrap();

是一个快速启动类。 然后要搭建ServerInitializer,在initChannel中创建一个ChannelPipeline,将自定义的各种Handler添加进去。

浏览器自动发出两次请求

chrome等浏览器在请求网页时,会自动另外发出{域名}/favicon.ico的请求,请求网站的logo。因此可以在channelRead0中分析uri做出响应。

浏览器不马上关闭连接

在完成对一个域名的请求后,浏览器可能会keep-alive保持与服务器连接。

  • 如果基于HTTP1.1,可能会有keep-alive。请求完不关闭连接。
  • 如果基于HTTP1.0,就是短连接。

tomcat之类的容器,可能由容器来决定关闭连接,但在netty中,可以服务器主动监测没访问的时长,并关闭连接。

服务器可以调用ctx.channel().close();ctx.close();主动关闭连接

如果要运行查看关闭连接效果,可以在channelRead0里的开头调用Thread.sleep(8000)让线程休眠,然后检查端口上的连接情况即可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 比较gradle和maven
  • netty的应用场景
  • helloWorld搭建
  • 浏览器自动发出两次请求
  • 浏览器不马上关闭连接
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档