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