编程语言
首页 > 编程语言> > java – Spring websocket STOMP取消订阅eventHandler

java – Spring websocket STOMP取消订阅eventHandler

作者:互联网

我有一个Spring Websocket Stomp应用程序,它接受SUBSCRIBE请求.

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

 @Component
 public class SubscribeStompEventHandler implements ApplicationListener<SessionSubscribeEvent> {

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

我用来验证订阅.

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

我的问题是:

>如果我将订阅请求的处理移动到传入的消息拦截器并停止消息传播,我可以让Broker不注册订阅吗?
>还可以使用此事件处理程序取消订阅的其他内容?

解决方法:

您需要创建ChannelInterceptor实现.只需扩展ChannelInterceptorAdapter并覆盖preSend(消息<?>消息,MessageChannel通道).在这里,您将可以访问包含会话信息的标题以进行验证.你还需要注册你的拦截器

@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

标签:spring-websocket,java,spring,stomp
来源: https://codeday.me/bug/20190828/1756022.html