java mina tcp_MINA实现TCP长连接(五)——心跳机制

前言

今天涉及以下内容:

心跳机制种类

心跳机制在客户端和服务端涉及的类

心跳机制在客户端和服务端的实现

效果图个项目结构图

涉及机制的几个类源码

先来波效果图

7bb18bf48fdc

客户端心跳日志.png

7bb18bf48fdc

服务端心跳日志.png

一.心跳机制种类

mina提供一个过滤器类org.apache.mina.filter.keepalive.KeepAliveMessageFactory,此类具备在IO空闲的时候发送并且反馈心跳包。

KeepAliveMessageFactory接口主要有以下几个方法:

boolean isRequest(IoSession ioSession, Object o)

boolean isResponse(IoSession ioSession, Object o)

Object getRequest(IoSession ioSession)

Object getResponse(IoSession ioSession, Object o)

心跳机制主要分为下面几类:

1.1 active 活跃型

读取通道空闲时发送心跳请求,一旦心跳请求被发出,若在keepAliveRequestTimeout内未收到心跳反馈,KeepAliveRequestTimeoutHandler将会被调用.心跳包被接收后,心跳反馈会立刻发出。

在此心跳机制下,KeepAliveMessageFactory类中的getRequest(IoSession ioSession)与getResponse(IoSession ioSession, Object o)必须返回非空

1.2 semi-active 半活跃型

读取通道空闲时发送心跳请求。发送心跳请求单不关注心跳反馈,当一个心跳请求包被接收后,心跳反馈立马发出。

在此机制下,KeepAliveMessageFactory类中的getRequest(IoSession ioSession)与getResponse(IoSession ioSession, Object o)必须返回非空。并且心跳包请求后超时无反馈的处理机制设置为KeepAliveRequestTimeoutHandler.NOOP(不做任何处理), KeepAliveRequestTimeoutHandler.LOG(只输出警告信息不做其他处理)

1.3 passive 被动型

当前IO不希望主动发送心跳请求,但是当接受到一个心跳请求后,那么该心跳反馈也会立即发出。

在此机制下, KeepAliveMessageFactory类中的getRequest(IoSession ioSession)必须反馈null,getResponse(IoSession ioSession, Object o)必须返回非空。

1.4 deaf speaker 聋子型

当前IO会主动发送心跳请求,但是不想发送任何心跳反馈。

在此机制下,KeepAliveMessageFacto

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值