我的服务器端配置在这里:
<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);
});
连接成功,但我无法在连接帧对象中找到队列后缀
答案 0 :(得分:2)
我们确实在早期的里程碑中包含了这样的标题(我认为直到4.0 RC1),但“队列后缀”现在已完成封装在服务器端。请参阅上面的Nick示例以及文档Spring WebSocket is not send queue-suffix after connection。
答案 1 :(得分:1)
我正在使用基于注释的配置和消息传递类。我也使用SpringBoot 1.2.0.RC1,它引入了Spring 4.1.2.RELEASE。
所以,鉴于我设置了我的websockets&amp; 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”。
希望这有帮助。