jiazx0107@163.com
2023-05-17 620eab6cca2bc9ef9ea6d3067a0a5ba1deadbd1c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.ld.igds.protocol.snap.server;
 
import com.ld.igds.protocol.snap.SnapUtils;
import com.ld.io.api.HeartbeatProvider;
import com.ld.io.api.IoSession;
import lombok.extern.slf4j.Slf4j;
 
 
/**
 * 心跳检测,当前服务器心跳维持为终端维持,当前只验证维持是否正常
 */
@Slf4j
public class HeartbeatProviderImpl implements HeartbeatProvider {
 
    @Override
    public byte[] provide(IoSession session) {
 
        log.debug("------------------抓拍插件心跳验证判断----------------");
        Long lastTime = SnapUtils.getHeartBeat(session.getAddress(), session.getPort());
 
        if (null == lastTime) {
            return null;
        }
 
        long cur = System.currentTimeMillis();
        // 如果两次心跳,间隔大于规定3次心跳周期则判断为离线
        if (cur - lastTime > SnapUtils.HEART_BEAT_TIME * 3 * 1000) {
            
            SnapUtils.delHeartBeat(session.getAddress(), session.getPort());
            log.info("---------抓拍插件心跳验证判断超时,连接被销毁--------KEY={}", session.getBusinessKey());
            session.destroy();
        }
 
        return null;
    }
 
}