Я пытаюсь подключить сервер Spring Boot Stomp с несколькими клиентами sockjs в автономном режиме, но получаю предупреждение
Websocket закрывается до установления соединения
с последующим
ПОЛУЧИТЬ http://192.168.1.45:8080/socket/327/si5osugt/jsonp?c=jp.a3xdefl net::ERR_ABORTED 404 (не найдено)
Я использую Spring Boot версии 2.1.2 с пакетом spring-boot-starter-websocket
на стороне сервера, а на стороне интерфейса я использую Angular 6 с версией sockjs-client
1.3.0. Интерфейс и серверная часть работают на порту 8080.
Я получаю некоторые ошибки при отключении интернета. Если интернет отключен, iframe пытается подключиться к https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.js.
Мне удалось настроить сервер stomp на серверной части для установки клиентской библиотеки, добавив .setClientLibraryUrl
к абсолютному пути, который доступен в автономном режиме.
registry.addEndpoint("/socket").setAllowedOrigins("*").withSockJS).setClientLibraryUrl("http://192.168.1.45/dist/sockjs.min.js");
и получите 200 OK на http://192.168.1.45/dist/sockjs.min.js< /а>
Весенний ботинок:
WebSocketConfiguration (расширяет AbstractWebSocketMessageBrokerConfigurer)
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/socket")
.setAllowedOrigins("*")
.withSockJS().setClientLibraryUrl("http://192.168.1.45/dist/sockjs.min.js");
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
MessageBrokerRegistry messageBrokerRegistry = registry.setApplicationDestinationPrefixes("/app");
messageBrokerRegistry.enableSimpleBroker( "/test", "/test2"
);
}
Веб-сокетконтроллер
private final SimpMessagingTemplate template;
@Autowired
WebSocketController(SimpMessagingTemplate template){
this.template=template;
}
@MessageMapping("/send/message")
public void onReceivedMessage( String destination , String message){
this.template.convertAndSend(destination , message);
}
public void convertAndSend(String url, Object o){
this.template.convertAndSend(url, o);
}
Угловой 6:
ТестКомпонет
ngAfterViewInit() {
let ws = new SockJS('http://192.168.1.45:8080/socket');
this.stompClient = Stomp.over(ws);
let that = this;
that.stompClient.subscribe("/test", (message) => {
if (message.body) {
console.log(message.body);
}
});
that.stompClient.subscribe("/test2", (message) => {
if (message.body) {
console.log(message.body);
}
});
}
Я думал, что это сработает, просто добавив клиентскую библиотеку sockjs в автономный доступный путь, но я получаю предупреждение
Websocket закрывается до установления соединения
с последующим
"GET http://192.168.1.45:8080/socket/327/si5osugt/jsonp?c=jp.a3xdefl net::ERR_ABORTED 404 (не найдено)"
Библиотека отлично работает с подключением к Интернету, но мне нужно, чтобы она работала как в онлайн, так и в офлайн-режиме.