拦截

事件提供了STOMP连接生命周期的通知,但并非针对每个客户端消息。应用程序还可以注册`ChannelInterceptor`来拦截任何消息,并在处理链的任何部分进行拦截。以下示例展示了如何拦截来自客户端的入站消息:

自定义的`ChannelInterceptor`可以使用`StompHeaderAccessor`或`SimpMessageHeaderAccessor`来访问消息信息,如下例所示:

应用程序还可以实现`ExecutorChannelInterceptor`,它是`ChannelInterceptor`的一个子接口,在处理消息的线程中提供回调。`ChannelInterceptor`为发送到通道的每条消息调用一次,而`ExecutorChannelInterceptor`为订阅通道消息的每个`MessageHandler`的线程提供钩子。

请注意,与前面描述的`SessionDisconnectEvent`一样,DISCONNECT消息可能来自客户端,也可能在WebSocket会话关闭时自动生成。在某些情况下,拦截器可能会为每个会话多次拦截此消息。组件对于多次断开连接事件应具有幂等性。