Class HeartPlugin<T>

java.lang.Object
org.aoju.bus.socket.plugins.AbstractPlugin<T>
org.aoju.bus.socket.plugins.HeartPlugin<T>
All Implemented Interfaces:
NetMonitor, Plugin<T>

public abstract class HeartPlugin<T> extends AbstractPlugin<T>
心跳插件
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • HeartPlugin

      public HeartPlugin(int heartRate, TimeUnit timeUnit)
      心跳插件
      Parameters:
      heartRate - 心跳触发频率
      timeUnit - heatRate单位
    • HeartPlugin

      public HeartPlugin(int heartRate, int timeout, TimeUnit unit)
      心跳插件

      心跳插件在断网场景可能会触发TCP Retransmission,导致无法感知到网络实际状态,可通过设置timeout关闭连接

      Parameters:
      heartRate - 心跳触发频率
      timeout - 消息超时时间
      unit - 时间单位
    • HeartPlugin

      public HeartPlugin(int heartRate, int timeout, TimeUnit timeUnit, HeartPlugin.TimeoutCallback timeoutCallback)
      心跳插件 心跳插件在断网场景可能会触发TCP Retransmission,导致无法感知到网络实际状态,可通过设置timeout关闭连接
      Parameters:
      heartRate - 心跳触发频率
      timeout - 消息超时时间
      timeUnit - 时间单位
      timeoutCallback - 超时回调
  • Method Details

    • preProcess

      public final boolean preProcess(AioSession session, T t)
      Description copied from interface: Plugin
      对请求消息进行预处理,并决策是否进行后续的MessageProcessor处理 若返回false,则当前消息将被忽略 若返回true,该消息会正常秩序MessageProcessor.process.
      Specified by:
      preProcess in interface Plugin<T>
      Overrides:
      preProcess in class AbstractPlugin<T>
      Parameters:
      session - 会话
      t - 对象
      Returns:
      the true/false
    • stateEvent

      public final void stateEvent(SocketStatus socketStatus, AioSession session, Throwable throwable)
      Description copied from interface: Plugin
      监听状态机事件
      Specified by:
      stateEvent in interface Plugin<T>
      Overrides:
      stateEvent in class AbstractPlugin<T>
      Parameters:
      socketStatus - 状态
      session - 会话
      throwable - 线程
      See Also:
    • sendHeartRequest

      public abstract void sendHeartRequest(AioSession session) throws IOException
      自定义心跳消息并发送
      Parameters:
      session - 会话
      Throws:
      IOException - 异常
    • isHeartMessage

      public abstract boolean isHeartMessage(AioSession session, T msg)
      判断当前收到的消息是否为心跳消息。 心跳请求消息与响应消息可能相同,也可能不同,因实际场景而异,故接口定义不做区分。
      Parameters:
      session - 会话
      msg - 消息
      Returns:
      the true/false