Class WebSocketChannelInterceptor

java.lang.Object
cn.herodotus.engine.message.websocket.interceptor.WebSocketChannelInterceptor
All Implemented Interfaces:
org.springframework.messaging.support.ChannelInterceptor

public class WebSocketChannelInterceptor extends Object implements org.springframework.messaging.support.ChannelInterceptor

Description: Websocket消息监听

用于监听websocket用户连接情况

Author:
: gengwei.zheng
Date:
: 2021/10/24 18:50
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    afterReceiveCompletion(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, Exception ex)
    1.
    void
    afterSendCompletion(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, boolean sent, Exception ex)
    1.
    org.springframework.messaging.Message<?>
    postReceive(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel)
    在检索到消息之后,返回调用方之前调用,可以进行信息修改。适用于PollableChannels,轮询场景
    void
    postSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, boolean sent)
    在消息发送后立刻调用
    boolean
    preReceive(org.springframework.messaging.MessageChannel channel)
    在消息被实际检索之前调用, 只适用于(PollableChannels, 轮询场景),在websocket的场景中用不到
    org.springframework.messaging.Message<?>
    preSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel)
    在消息发送之前调用,方法中可以对消息进行修改,如果此方法返回值为空,则不会发生实际的消息发送调用

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • WebSocketChannelInterceptor

      public WebSocketChannelInterceptor()
  • Method Details

    • preSend

      public org.springframework.messaging.Message<?> preSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel)
      在消息发送之前调用,方法中可以对消息进行修改,如果此方法返回值为空,则不会发生实际的消息发送调用
      Specified by:
      preSend in interface org.springframework.messaging.support.ChannelInterceptor
      Parameters:
      message - Message
      channel - MessageChannel
      Returns:
      Message
    • postSend

      public void postSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, boolean sent)
      在消息发送后立刻调用
      Specified by:
      postSend in interface org.springframework.messaging.support.ChannelInterceptor
      Parameters:
      message - Message
      channel - MessageChannel
      sent - boolean值参数表示该调用的返回值
    • afterSendCompletion

      public void afterSendCompletion(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, boolean sent, Exception ex)
      1. 在消息发送完成后调用,而不管消息发送是否产生异常,在此方法中,我们可以做一些资源释放清理的工作 2. 此方法的触发必须是preSend方法执行成功,且返回值不为null,发生了实际的消息推送,才会触发
      Specified by:
      afterSendCompletion in interface org.springframework.messaging.support.ChannelInterceptor
      Parameters:
      message - Message
      channel - MessageChannel
      sent - boolean值参数表示该调用的返回值
      ex - 失败时抛出的 HerodotusException
    • preReceive

      public boolean preReceive(org.springframework.messaging.MessageChannel channel)
      在消息被实际检索之前调用, 只适用于(PollableChannels, 轮询场景),在websocket的场景中用不到
      Specified by:
      preReceive in interface org.springframework.messaging.support.ChannelInterceptor
      Parameters:
      channel - channel MessageChannel
      Returns:
      如果返回false, 则不会对检索任何消息
    • postReceive

      public org.springframework.messaging.Message<?> postReceive(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel)
      在检索到消息之后,返回调用方之前调用,可以进行信息修改。适用于PollableChannels,轮询场景
      Specified by:
      postReceive in interface org.springframework.messaging.support.ChannelInterceptor
      Parameters:
      message - Message
      channel - MessageChannel
      Returns:
      如果返回null, 就不会进行下一步操作
    • afterReceiveCompletion

      public void afterReceiveCompletion(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, Exception ex)
      1. 在消息接收完成之后调用,不管发生什么异常,可以用于消息发送后的资源清理 2. 只有当preReceive 执行成功,并返回true才会调用此方法 3. 适用于PollableChannels,轮询场景
      Specified by:
      afterReceiveCompletion in interface org.springframework.messaging.support.ChannelInterceptor
      Parameters:
      message - Message
      channel - MessageChannel
      ex - 失败时抛出的 HerodotusException