有没有办法在Spring中拦截STOMP CONNECT
框架并在某些条件下拒绝它?
拦截本身可以使用SessionConnectEvent
完成,但我想根据标题允许或拒绝连接。我不能在SessionConnectEvent
听众中做到这一点。
答案 0 :(得分:2)
如果我们查看StompSubProtocolHandler
代码,我们会看到:
try {
SimpAttributesContextHolder.setAttributesFromMessage(message);
if (this.eventPublisher != null) {
if (StompCommand.CONNECT.equals(headerAccessor.getCommand())) {
publishEvent(new SessionConnectEvent(this, message, user));
}
........
outputChannel.send(message);
}
因此,CONNECT
框架不仅作为SessionConnectEvent
发布,而且还发送到clientInboundChannel
。
因此,您需要实现自己的要求只是提供自定义ChannelInterceptor
preSend
实施,并将其注册为覆盖WebSocketMessageBrokerConfigurer.configureClientInboundChannel
。