Spring Websocket Stomp手柄CONNECT框架

时间:2015-06-14 14:30:47

标签: spring stomp spring-websocket

有没有办法在Spring中拦截STOMP CONNECT框架并在某些条件下拒绝它? 拦截本身可以使用SessionConnectEvent完成,但我想根据标题允许或拒绝连接。我不能在SessionConnectEvent听众中做到这一点。

1 个答案:

答案 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