文档章节

MINA的心跳filter的使用

穷困潦倒
 穷困潦倒
发布于 2016/03/02 10:10
字数 376
阅读 574
收藏 2

一、KeepAliveFilter

1、构造函数:

KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus)

KeepAliveFilter(KeepAliveMessageFactory messageFactory, IdleStatus interestedIdleStatus, KeepAliveRequestTimeoutHandler policy)

第一个使用默认的KeepAliveRequestTimeoutHandler.CLOSE

第二个使用指定(或自己定义的)KeepAliveRequestTimeoutHandler

2、方法:

setForwardEvent(boolean forwardEvent)

设置是否把IoEventType.SESSION_IDLE往下传(下一个filter,handler),如果设为true,空闲时还会使用filter,handler处理空闲的相关方法。

setRequestTimeout(int keepAliveRequestTimeout)

设置接收心跳回复的期限(就是KeepAliveFilter发了一个心跳包,如果在设置的期限内没收到回复就会调

KeepAliveRequestTimeoutHandler)。该方法会影响

IoSessionConfig.setIdleTime(IdleStatus, int)。就是如果设

setRequestTimeout,调用setIdleTime进行的设置就不会生效

setRequestInterval(int keepAliveRequestInterval)

设置心跳包发送周期

二、KeepAliveRequestTimeoutHandler

1、重写KeepAliveRequestTimeoutHandler需要实现下面四个方法

isResponse

判断是否为心跳回复

isRequest

判断客户端发送的数据是否为心跳包

getRequest

获取心跳包

getResponse

获取回复心跳包

2、以上四个方法调用顺序:

在收到客户端数据时,调用isResponse,isRequest,若isRequest返回true,再调用getResponse

往客户端发送数据时,调用isResponse,isRequest

如果设置了心跳包发送周期(setRequestInterval),会周期调用getRequest(要注意的是,如

setForwardEvent设为true,那么调用getRequest,也会调用其他filter,handler的处理空闲的相关方法


© 著作权归作者所有

穷困潦倒
粉丝 9
博文 7
码字总数 16916
作品 0
广州
私信 提问
用mina实现一个客户端程序,怎么实现每隔10秒向服务器端发一次心跳

用mina实现一个客户端程序,服务器端要求客户端每隔10秒就要向服务器端发送一个“heartbeat”(字符串即可) 怎么实现每隔10秒向服务器端发一次心跳? 有没有可用的filter?或者自己实现一个...

rockjava
2010/04/07
11.2K
6
mina的心跳机制客户端是android平台下运行,在WIFI环境下无法接收到心跳

mina版本是最新版2.0.9的版本。客户端是在android平台下运行的。其中使用到了mina自带的心跳API KeepAliveMessageFactory,心跳的策略是 服务器3分钟给客户端发送一次心跳。客户端回应服务器...

马尾
2015/08/12
712
1
apache mina遇到一处不太懂得请osc知道朋友的指点指点。【紧急求助】

我之前使用netty的时候,当我需要设置一个登陆后才执行其他操作时,可以这样写。 下面是netty的代码。 ch.pipeline().addLast("LoginHandler",new Login()); //登录 ch.pipeline().addLast(...

questmina
2016/03/18
46
0
一个智能家居平台有百万终端,上万管理用户,目前用的mina框架但是不知道如何做心跳如何在平台与终端间传输数据

@老盖 你好,想跟你请教个问题:一个智能家居平台有百万终端,上万管理用户,目前用的mina框架但是不知道如何做心跳如何在平台与终端间传输数据;第一个问题:我如何让百万终端跟平台保持通讯...

stephen_118
2015/07/05
493
3
Mina Filter 丢失是为什么?

最近项目中需要用到socket通信 去处理大并发设备请求所以选择了使用mina框架来处理socket请求。 服务端socket 代码如下: 通过mina的filter机制来处理协议定义的过滤,然后把处理完的结果丢给...

姓骚扰
2013/02/19
517
2

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部