smartboot 开源组织 smartboot 开源组织
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
首页
  • smart-socket
  • smart-http
  • smart-servlet
  • smart-mqtt
  • smart-license
  • feat
❤️开源捐赠
💰付费服务
🏠加入社区
  • Gitee (opens new window)
  • Github (opens new window)
  • smart-socket 首页
  • 概要

    • 关于 smart-socket
    • 我们的用户
  • 快速上手

    • 🚩五分钟上手
    • 🚩通信协议
    • 性能压测
    • 新手常见问题
  • 高级进阶

    • 1.状态机
    • 2.服务端绑定网卡
  • 插件

    • 1. 关于插件💬
    • 2. 心跳插件
      • 构造参数
      • 接口定义
      • 示例
    • 2. 闲置超时插件
    • 3. 通信调参插件
    • 4. 黑名单插件🛡
    • 5. 加密通信插件🛡
    • 6. 流量防控插件🛡
    • 7. 码流监测插件🛡
    • 8. proxy-protocol插件
  • 公众号

    • 💰单机百万长连接背后的故事
    • 💰揭秘百万长连接背后的黑科技
    • 💰让通信数据无所遁形
    • 性能分析的一柄利刃
    • 💰smart-socket的那点事之内存池
  • smart-socket
  • 插件
三刀
2022-11-02
目录

2. 心跳插件

当出现非正常的网络断连,通信双方可能无法感知到该情况(譬如拔网线、服务器断电)。 此时需要通过业务层面的心跳消息感知异常并释放网络资源。

# 构造参数

  • heartRate:心跳频率,每隔 hearRate 时长发送一次心跳消息。
  • timeout:超时时间,超过 timeout 时长没收到任何消息则触发超时回调timeoutCallback。
  • timeUnit:heartRate 和 timeout 参数的时间单位。
  • timeoutCallback:超时回调方法,默认断开网络连接,支持自定义实现。

# 接口定义

  • sendHeartRequest:发送心跳消息,当空闲时长超过 heartRate 时触发。
  • isHeartMessage:接收到的消息是否为心跳消息。若为心跳消息,将不会进入 MessageProcessor#process方法。

# 示例

完整示例见:HeartPluginDemo (opens new window)

processor.addPlugin(new HeartPlugin<String>(5, 7, TimeUnit.SECONDS) {
    @Override
    public void sendHeartRequest(AioSession session) throws IOException {
        WriteBuffer writeBuffer = session.writeBuffer();
        byte[] content = "heart message".getBytes();
        writeBuffer.writeInt(content.length);
        writeBuffer.write(content);
    }

    @Override
    public boolean isHeartMessage(AioSession session, String msg) {
        return "heart message".equals(msg);
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 关于插件💬
2. 闲置超时插件

← 1. 关于插件💬 2. 闲置超时插件→

Theme by Vdoing | Copyright © 2017-2025 三刀
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式