Spring Websocket Stomp-广播(主题、队列)

Spring Websocket Stomp-广播(主题、队列),spring,websocket,stomp,Spring,Websocket,Stomp,如何向所有订户(主题)和指定的用户(频道)广播 对吗 WebSocketConnectHandlerDecoratorFactory类的用途是什么 public final class WebSocketConnectHandlerDecoratorFactory implements WebSocketHandlerDecoratorFactory { private static final Log logger = LogFactory.getLog(WebSocketConne

如何向所有
订户(主题)
和指定的
用户(频道)
广播

对吗

WebSocketConnectHandlerDecoratorFactory
类的用途是什么

public final class WebSocketConnectHandlerDecoratorFactory implements WebSocketHandlerDecoratorFactory {

    private static final Log logger = LogFactory.getLog(WebSocketConnectHandlerDecoratorFactory.class);

    private final ApplicationEventPublisher eventPublisher;

    /**
     * Creates a new instance
     *
     * @param eventPublisher the {@link ApplicationEventPublisher} to use. Cannot be null.
     */
    public WebSocketConnectHandlerDecoratorFactory(ApplicationEventPublisher eventPublisher) {
        Assert.notNull(eventPublisher, "eventPublisher cannot be null");
        this.eventPublisher = eventPublisher;
    }

    @Override
    public WebSocketHandler decorate(WebSocketHandler handler) {
        return new SessionWebSocketHandler(handler);
    }

    private final class SessionWebSocketHandler extends WebSocketHandlerDecorator {

        public SessionWebSocketHandler(WebSocketHandler delegate) {
            super(delegate);
        }

        @Override
        public void afterConnectionEstablished(WebSocketSession wsSession)
                throws Exception {
            super.afterConnectionEstablished(wsSession);

            publishEvent(new SessionConnectEvent(this,wsSession));
        }

        private void publishEvent(ApplicationEvent event) {
            try {
                eventPublisher.publishEvent(event);
            }
            catch (Throwable ex) {
                logger.error("Error publishing " + event + ".", ex);
            }
        }
    }
}
  • 见其:


  • 谢谢!阿尔特姆·比兰,这里也一样,@Olivia
    public final class WebSocketConnectHandlerDecoratorFactory implements WebSocketHandlerDecoratorFactory {
    
        private static final Log logger = LogFactory.getLog(WebSocketConnectHandlerDecoratorFactory.class);
    
        private final ApplicationEventPublisher eventPublisher;
    
        /**
         * Creates a new instance
         *
         * @param eventPublisher the {@link ApplicationEventPublisher} to use. Cannot be null.
         */
        public WebSocketConnectHandlerDecoratorFactory(ApplicationEventPublisher eventPublisher) {
            Assert.notNull(eventPublisher, "eventPublisher cannot be null");
            this.eventPublisher = eventPublisher;
        }
    
        @Override
        public WebSocketHandler decorate(WebSocketHandler handler) {
            return new SessionWebSocketHandler(handler);
        }
    
        private final class SessionWebSocketHandler extends WebSocketHandlerDecorator {
    
            public SessionWebSocketHandler(WebSocketHandler delegate) {
                super(delegate);
            }
    
            @Override
            public void afterConnectionEstablished(WebSocketSession wsSession)
                    throws Exception {
                super.afterConnectionEstablished(wsSession);
    
                publishEvent(new SessionConnectEvent(this,wsSession));
            }
    
            private void publishEvent(ApplicationEvent event) {
                try {
                    eventPublisher.publishEvent(event);
                }
                catch (Throwable ex) {
                    logger.error("Error publishing " + event + ".", ex);
                }
            }
        }
    }
    
    /**
     * Ensures that a {@link SessionConnectEvent} is published in
     * {@link WebSocketHandler#afterConnectionEstablished(WebSocketSession)}. This
     * is necessary so that the {@link WebSocketSession} can be mapped to the
     * corresponding Spring {@link Session} to terminate any
     * {@link WebSocketSession} associated with a Spring {@link Session} that was
     * destroyed.
     *
     * @author Rob Winch
     * @since 1.0
     *
     * @see WebSocketRegistryListener
     */