Я использую Spring Boot и RabbitMQ как брокер сообщений для моего приложения STOMP WebSocket.Вот моя конфигурация брокера сообщений:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Value("${rabbitmq.host}")
private String host;
@Value("${rabbitmq.port}")
private Integer port;
@Value("${rabbitmq.login}")
private String login;
@Value("${rabbitmq.passcode}")
private String passcode;
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/stomp")
.setAllowedOrigins("*");
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableStompBrokerRelay("/topic")
.setRelayHost(this.host)
.setRelayPort(this.port)
.setSystemLogin(this.login)
.setSystemPasscode(this.passcode)
.setSystemHeartbeatSendInterval(0)
.setSystemHeartbeatReceiveInterval(0)
;
}
}
На стороне интерфейса я использую stomp.js со следующим кодом для подключения:
var socket = new WebSocket("ws://localhost:5000/stomp");
stompClient = Stomp.over(socket);
stompClient.heartbeat.outgoing = 0;
stompClient.heartbeat.incoming = 0;
stompClient.connect({}, function (data) {
stompClient.subscribe('/topic', function (payload) {
});
});
И у меня есть следующий результат в моемконсоль браузера:
Opening Web Socket...
undefined
Web Socket Opened...
>>> CONNECT
accept-version:1.1,1.0
heart-beat:0,0
<<< PONG
<<< CONNECTED
server:RabbitMQ/3.6.6
heart-beat:0,0
version:1.1
connected to server RabbitMQ/3.6.6
>>> SUBSCRIBE
id:sub-0
destination:/topic
Может кто-нибудь объяснить, почему я получил с сервера "\ n" (кадр PONG) после кадра CONNECT?Потому что в конфигурации моего брокера я отключил биения:
.setSystemHeartbeatSendInterval(0)
.setSystemHeartbeatReceiveInterval(0)
и, конечно, я отключил биения в моем скрипте js для подключения заголовков:
stompClient.heartbeat.outgoing = 0;
stompClient.heartbeat.incoming = 0;
Большое спасибо залюбая помощь)