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 не отправляют суффикс очереди после подключения.