Module bus.socket

Class HeartPlugin<T>

java.lang.Object
org.miaixz.bus.socket.plugin.AbstractPlugin<T>
org.miaixz.bus.socket.plugin.HeartPlugin<T>
All Implemented Interfaces:
Monitor, 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 - 消息超时时间
  • Method Details

    • process

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

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

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

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