Spring WebSocket не передает суффикс очереди после подключения

Мой серверный конфиг находится здесь:

<websocket:message-broker application-destination-prefix="/chat">
        <websocket:stomp-endpoint path="/connect">
          <websocket:sockjs/>
        </websocket:stomp-endpoint>
        <websocket:simple-broker prefix="/broadcast/"/>
</websocket:message-broker>

Код на стороне клиента:

var stompClient = null;
var socket = new SockJS('/connect');
stompClient = Stomp.over(socket);
stompClient.connect('', '', function (frame) {
    console.log(frame); // Inside frame object queue-suffix not sended
    var suffix = frame.headers['queue-suffix'];
    stompClient.subscribe('/broadcast/message'+suffix, function(calResult){
      console.log(calResult);
    });
}, function (error) {
    console.log(error);
});

Соединение установлено успешно, но я не могу найти суффикс очереди в объекте кадра соединения

2 ответа

Решение

Я использую конфиги на основе аннотаций и классы сообщений. Я также использую SpringBoot 1.2.0.RC1, который тянет весной 4.1.2.RELEASE.

Итак, учитывая, что я настроил свои веб-сокеты и STOMP следующим образом:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketProdConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
       stompEndpointRegistry.addEndpoint("/inoutboard").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
       registry.setApplicationDestinationPrefixes("/app");
       registry.enableSimpleBroker("/topic", "/queue");
    }
 }

а затем пример метода отправки / получения в моем контроллере

@Controller
public class InOutBoardController {
...
    @MessageMapping("/user-status-refresh")
    @SendToUser(value = "/queue/user-status-refresh", broadcast = false)
    public UserStatusUpdateMessage[] userStatusRefresh() {
        ...
    }
}

Когда я получаю свои сообщения в клиенте, они имеют тему "/user/njacobs5074/queue/user-status-values".

Надеюсь это поможет.

Мы включили такой заголовок в ранние этапы (до 4.0 RC1, я думаю), но "суффикс очереди" теперь завершен, инкапсулирован на стороне сервера. См. Пример от Ника выше, а также документы Spring WebSocket не отправляют суффикс очереди после подключения.

Другие вопросы по тегам