Netty入门(九)空闲连接以及超时
检测空闲连接和超时是为了及时释放资源。常见的方法是发送消息来测试一个不活跃的连接,通常称为“心跳”。
Netty 提供了几个 ChannelHandler 来实现此目的,如下:
下面是 IdleStateHandler 的一个简单使用:
1 /** 2 * 空闲连接 3 * 当超过60s没有数据收到时,就发送心跳到远端 4 * 如果没有回应,关闭连接 5 */ 6 public class IdleStateHandlerInitializer extends ChannelInitializer<Channel> { 7 8 @Override 9 protected void initChannel(Channel ch) throws Exception { 10 ChannelPipeline pipeline = ch.pipeline(); 11 // 若60s没有收到消息,调用userEventTriggered方法 12 pipeline.addLast(new IdleStateHandler(0, 0, 60, TimeUnit.SECONDS)); 13 pipeline.addLast(new HeartBeatHandle()); 14 } 15 16 public static final class HeartBeatHandle extends ChannelInboundHandlerAdapter { 17 private static final ByteBuf HEARTBEAT_SEQUENCE = Unpooled.unreleasableBuffer( 18 Unpooled.copiedBuffer("HEARTBEAT", CharsetUtil.UTF_8)); 19 20 @Override 21 public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception { 22 if(evt instanceof IdleStateEvent) { 23 // 发送心跳到远端 24 ctx.writeAndFlush(HEARTBEAT_SEQUENCE.duplicate()) 25 .addListener(ChannelFutureListener.CLOSE_ON_FAILURE); // 关闭连接 26 } else { 27 // 传递给下一个处理程序 28 super.userEventTriggered(ctx, evt); 29 } 30 } 31 } 32 33 }
转载于:https://www.cnblogs.com/coderJiebao/p/Netty09.html
Netty入门(九)空闲连接以及超时相关推荐
- postgresql 连接超时_关于超时:如何自动关闭PostgreSQL中的空闲连接?
有些客户端连接到我们的postgresql数据库,但保持连接打开. 是否有可能告诉Postgresql在一定量的不活动后关闭这些连接? TL; DR IF you're using a Postgre ...
- Netty入门与实战:仿写微信IM即时通讯系统
转载自:Netty入门与实战:仿写微信IM即时通讯系统 Netty是互联网中间件领域使用最广泛最核心的网络通信框架,几乎所有互联网中间件或者大数据领域均离不开Netty,掌握Netty是作为初中级工程 ...
- Netty入门与实战教程
前言:都说Netty是Java程序员必须要掌握的一项技能,带着不止要知其然还要知其所以然的目的,在慕课上找了一个学习Netty源码的教程,看了几章后着实有点懵逼.虽然用过Netty,并且在自己的个人网 ...
- 网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?
1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步 ...
- 超详细Netty入门
思维导图 前言 本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路. 一.Netty概述 官方的介绍: ...
- Lettuce连接池超时问题简单记录
使用Lettuce连接池,隔一段时间不连,再去连,就出现超时问题 问题分析定位 解决方案 方案一 方案二 问题分析定位 一直连着没问题,只要间隔一段时间不连,再去连的时候就会出现超时问题,超时几次后就 ...
- 超详细Netty入门,看这篇就够了!
思维导图 前言 本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路. 一.Netty概述 官方的介绍: ...
- netty入门前置知识-NIO
netty入门前置知识-NIO Netty简介 Netty 的介绍 Netty 的应用场景 互联网行业 游戏行业 大数据领域 其它开源项目使用到 Netty Netty 的学习资料参考 Java BI ...
- Netty入门教程——认识Netty
什么是Netty? Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架. Netty 是一个广泛使用的 Java 网络编程框架(N ...
最新文章
- 深度学习Dropout技术分析
- SER SERVER存储过程
- Gateway网关-网关作用介绍
- 解决研发管理问题的途径
- Spring Integration –轮询文件的创建和修改
- 趣学 C 语言(八)—— 文件内部位置
- python爬虫什么意思-Python爬虫是什么意思有啥用 python爬虫原理实例介绍
- python seo 外链_百度链接提交-主动推送程序Python版
- 伪代码之KMeans和DBSCAN
- IOUtils pom 依赖
- JDK成年了,JDK18版本发布,走进JDK18新特性
- apache 开启 网页压缩
- 基于vegan包对otu表抽平——r语言
- Md5+salt实现用户加密
- 9.C++例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。
- HTM页面监听Crtl + C 事件
- CSS单行文本和多行文本
- 中文和拼音的相关转换
- VirtualBox 共享粘贴板失效 安装增强功能时提示 未能加载虚拟光盘到虚拟电脑
- css都能作哪些特效,推荐10款重量级CSS3的全新特效