目录
一、简介
netty心跳机制示例,使用Netty实现心跳机制,使用netty4,IdleStateHandler 实现。
Netty心跳机制,netty心跳检测,netty,心跳我们知道使用netty的时候,大多数的东西都与Handler有
关,我们的业务逻辑基本都是在Handler中实现的。
Netty中自带了一个IdleStateHandler可以用来实现心跳检测。
心跳检测逻辑是这样的:
服务端启动后,等待客户端连接,客户端连接之后,向服务端发送消息。如果客户端在“干活”那么服务
端必定会收到数据,如果客户端“闲下来了”那么服务端就接收不到这个客户端的消息,既然客户端闲下
来了,不干事,那么何必浪费连接资源呢?所以服务端检测到一定时间内客户端不活跃的时候,将客户端
连接关闭。
本文要实现的逻辑步骤为:
- 启动服务端,启动客户端
- 客户端向服务端发送"I am alive",并sleep随机时间,用来模拟空闲。
- 服务端接收客户端消息,并返回"copy that",客户端空闲时 计数+1.
- 服务端客户端继续通信
- 服务端检测客户端空闲太多,关闭连接。客户端发现连接关闭了,就退出了。
二、案例代码
1. 心跳检测服务端代码
public class HeartBeatServer {
int port ;
public HeartBeatServer(int port){
this.port = port;
}
public void start(){
ServerBootstrap bootstrap = new ServerBootstrap();
EventLoopGroup boss = new NioEventLoopGroup();
EventLoopGroup worker = new NioEventLoopGroup();
try{
bootstrap