Конфигурация Spring Java для настраиваемого рукопожатия веб-сокета на конечной точке Stomp

Я хотел бы иметь эквивалент этой конфигурации XML (взято здесь) , но с использованием конфигурации Java:

<bean id="customHandler" class="app.wsock.CustomHandler"/>

<websocket:message-broker application-destination-prefix="/app">
  <websocket:stomp-endpoint path="/foo">
    <websocket:handshake-handler ref="customHandler"/>
  </websocket:stomp-endpoint>
  <websocket:simpl-broker prefix="/topic,/queue" />
</websocket:message-broker>

Моя цель — создать класс, который ограничивает подключение к моей конечной точке STOMP (т. е. к его веб-сокету) на основе некоторых критериев.

Я не хочу использовать XML для настройки своей конечной точки, как мне преобразовать этот фрагмент в Java Config?


person Alessandro Polverini    schedule 03.09.2014    source источник


Ответы (1)


Что-то вроде этого:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Bean
    public HandshakeHandler handshakeHandler() {
        return new app.wsock.CustomHandler();
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/foo").setHandshakeHandler(handshakeHandler());
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry configurer) {
        configurer.enableStompBrokerRelay("/topic", "/queue");
    }

}
person Artem Bilan    schedule 03.09.2014
comment
Я пытался переопределить различные методы, такие как isValidOrigin(), handleInvalidConnectHeader(), defineUser(), но ни один из них не вызывается. Я полагаю, что класс даже не создается. (Я использую Spring Boot, если это может помочь) - person Alessandro Polverini; 03.09.2014
comment
??? Это другой вопрос, и он связан с неправильным способом создания пользовательского HandshakeHandler - person Artem Bilan; 03.09.2014
comment
Извините, я не понимаю, что вы имеете в виду, как указано в вопросе. Моя цель - создать класс, который ограничивает подключение к моей конечной точке STOMP (т.е. к его веб-сокету) на основе некоторых критериев., но рукопожатие построенный таким образом, не используется для рукопожатия, поэтому он бесполезен, это просто bean-компонент, не связанный с веб-сокетом - person Alessandro Polverini; 03.09.2014
comment
Нет, ваш вопрос был о Java config equivalent. Если у вас возникли проблемы с каким-то пользовательским кодом, вы должны начать новый вопрос. Пожалуйста, будьте более конкретными и не делите несколько вопросов в одной теме. - person Artem Bilan; 03.09.2014
comment
Я имею в виду, что конфигурация Java не эквивалентна XML, о котором я сообщил в своем вопросе: с конфигурацией XML handshakeHandler вызывается правильно, а в предоставленной вами конфигурации java он вообще не используется, настолько непригоден для работы, которую он должен делать. - person Alessandro Polverini; 03.09.2014
comment
Извините, не понятно, что происходит в вашем случае. Вот рабочий пример из Spring Integration: github.com/spring-projects/spring-integration/blob/master/ - person Artem Bilan; 04.09.2014
comment
Давайте продолжим обсуждение в чате. - person Alessandro Polverini; 04.09.2014