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 -
Method Summary
Modifier and TypeMethodDescriptionvoidafterReceiveCompletion(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, Exception ex) 1.voidafterSendCompletion(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,轮询场景voidpostSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, boolean sent) 在消息发送后立刻调用booleanpreReceive(org.springframework.messaging.MessageChannel channel) 在消息被实际检索之前调用, 只适用于(PollableChannels, 轮询场景),在websocket的场景中用不到org.springframework.messaging.Message<?>preSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel) 在消息发送之前调用,方法中可以对消息进行修改,如果此方法返回值为空,则不会发生实际的消息发送调用
-
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:
preSendin interfaceorg.springframework.messaging.support.ChannelInterceptor- Parameters:
message-Messagechannel-MessageChannel- Returns:
Message
-
postSend
public void postSend(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel, boolean sent) 在消息发送后立刻调用- Specified by:
postSendin interfaceorg.springframework.messaging.support.ChannelInterceptor- Parameters:
message-Messagechannel-MessageChannelsent- 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:
afterSendCompletionin interfaceorg.springframework.messaging.support.ChannelInterceptor- Parameters:
message-Messagechannel-MessageChannelsent- boolean值参数表示该调用的返回值ex- 失败时抛出的 HerodotusException
-
preReceive
public boolean preReceive(org.springframework.messaging.MessageChannel channel) 在消息被实际检索之前调用, 只适用于(PollableChannels, 轮询场景),在websocket的场景中用不到- Specified by:
preReceivein interfaceorg.springframework.messaging.support.ChannelInterceptor- Parameters:
channel- channelMessageChannel- Returns:
- 如果返回false, 则不会对检索任何消息
-
postReceive
public org.springframework.messaging.Message<?> postReceive(org.springframework.messaging.Message<?> message, org.springframework.messaging.MessageChannel channel) 在检索到消息之后,返回调用方之前调用,可以进行信息修改。适用于PollableChannels,轮询场景- Specified by:
postReceivein interfaceorg.springframework.messaging.support.ChannelInterceptor- Parameters:
message-Messagechannel-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:
afterReceiveCompletionin interfaceorg.springframework.messaging.support.ChannelInterceptor- Parameters:
message-Messagechannel-MessageChannelex- 失败时抛出的 HerodotusException
-