繁体   English   中英

Spring websocket STOMP从eventHandler取消订阅

[英]Spring websocket STOMP Unsubscribe from eventHandler

我有一个接受订阅请求的 Spring Websocket Stomp 应用程序。

在应用程序中,我有一个 SUBSCRIBE 处理程序,即,

 @Component
 public class SubscribeStompEventHandler implements ApplicationListener<SessionSubscribeEvent> {

    @Override
    public void onApplicationEvent(SessionSubscribeEvent event) {}
 }

我用来验证订阅。

如果订阅无效,例如,当前用户看不到该订阅,我希望 Broker(我使用 SimpleMessagingBroker)“忘记”该订阅,或者最好不要注册它。

我的问题是:

  • 如果我将订阅请求的处理转移到传入消息拦截器并停止消息传播,我可以让 Broker 不注册订阅吗?

  • 此事件处理程序还可以使用什么来取消订阅?

您需要创建ChannelInterceptor实现。 只需扩展ChannelInterceptorAdapter并覆盖preSend(Message<?> message, MessageChannel channel) 在这里,您可以访问带有会话信息的标头以进行验证。 你还需要注册你的拦截器

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    registry.configureBrokerChannel().interceptors(new YourInterceptor())
    registry.enableSimpleBroker("/queue/", "/topic/");
    registry.setApplicationDestinationPrefixes("/app");
}

此处的更多信息如何使用 Spring-websocket 根据用户权限拒绝主题订阅

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM