gpt4 book ai didi

java - Spring websocket STOMP 取消订阅 eventHandler

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:06:06 25 4
gpt4 key购买 nike

我有一个接受订阅请求的 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) .在这里,您将可以访问带有 session 信息的 header 以进行验证。你还需要注册你的拦截器

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

更多信息在这里 How to reject topic subscription based on user rights with Spring-websocket

关于java - Spring websocket STOMP 取消订阅 eventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39641309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com