mina心跳过滤器

原创 2016年05月31日 20:04:44
一、Mina本身提供了一个过滤器类KeepAliveFilter,该过滤器用于在IO空闲的时候发送并且反馈心跳包,在KeepAliveFilter中共有五个构造器,最终调用的都是有五个参数的构造器
           1)KeepAliveMessageFactory:该实例引用用于判断接受与发送的包是否是心跳包,以及心跳请求包的实现
           2)IdleStatus:该过滤器所关注的空闲状态,默认认为读取空闲,即当读取通道空闲的时候发送心跳包
           3)KeepAliveRequestTimeoutHandler:心跳包请求后超时无反馈情况下的处理机制,默认为关闭连接
           4)KeepAliveRequestInterval:心跳请求包发送的频率
           5)KeepAliveRequestTimeout:心跳请求包超时时间
我们需要实现KeepAliveMessageFactory接口里的四个方法

如何实现以上四个方法呢,让我们来看看mina是如何实现的,源码如下

首先判断这个信息是不是心跳请求信息(是不是心跳请求信息是根据双方的约定来实现的,例如接收到的第一个字符串是x就代表这个信息是心跳请求信息)
如果是心跳请求信息,调用getResponse方法,在这里我们可以选择实现或者不实现getResponse方法,对应的就是心跳机制的两种不同类型,
然后判断这个信息是不是心跳响应信息,如果是心跳响应信息充值session的空闲状态

最后请求执行下一个过滤器

原理OVER

二、在IoAcceptor中配置过滤器链filterChainBuilder

在过滤器链中配置心跳过滤器 value-ref="heartbeat"

配置心跳过滤器KeepAliveFilter

三个参数的配置如下

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

mina 心跳包,断线重连的问题

mina自带了心跳包机制,我是每隔15秒发送一次心跳包,若30秒内没有收到,则认为超时。 网络连接的主题函数是: /** * 30秒后超时 */ private st...
  • sangsa
  • sangsa
  • 2016-05-21 20:02
  • 4559

mina 服务端实现心跳

心跳包,那么就是验证服务器和客户端是否连接,只要设置session的idle 时间差就行了  /**   * session建立时调用   */  @Override  public voi...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Mina开源框架 心跳机制详解

本文纯手工制作,请用心观看。 在详细讲解mina的心跳机制前,读者需要已经具备了mina的基础知识。 如果不够了解,请查看一下连接。 http://www.cnblogs.com/pricks/p/3...

JAVA NIO异步通信框架MINA选型和使用的几个细节(概述入门,UDP, 心跳)

JAVA NIO异步通信框架MINA选型和使用的几个细节(概述入门,UDP, 心跳) 博客分类:  NIO      Apache MINA 2 是一个开发高性能和高...

MINA框架中原生态心跳支持

MINA本身自带了对心跳协议的支持,可以对心跳做出细致的配置,昨天仔细研究了一下MINA的API文档,翻译了一下其中心跳的内容(翻译的不好请大家见谅),做了一个测试例子。和需要用到MINA此功能的同行...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)