提问者:小点点

SpringWebsocket跺脚手柄CONNECT框架


有没有办法在Spring中拦截STOMPCONNECT帧并在某些条件下拒绝它?拦截本身可以使用SessionConnectEvent完成,但我想根据标头允许或拒绝连接。我不能在SessionConnectEvent侦听器中执行此操作。


共1个答案

匿名用户

如果我们查看StompSubProtocol colHandler代码,我们会看到:

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发出,而且还被发送到clientIn的Channel

因此,您需要实现您的需求的只是提供一个自定义的ChannelInterceptorpresend实现并注册它覆盖WebSocketMessageBrokerConfigrer. configureClientInendendChannel

相关问题