Проблемы с автономным подключением клиента Sping Boot + Sockjs - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь подключить Spring Boot Stomp Server к нескольким клиентам sockjs в автономном режиме, но я получаю предупреждение

Веб-сокет закрыт до установления соединения

затем

GET http://192.168.1.45:8080/socket/327/si5osugt/jsonp?c=jp.a3xdefl net :: ERR_ABORTED 404 (не найдено)

Я использую Spring Boot Version 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 server на бэкэнде, чтобы настроить клиентскую библиотеку, добавив .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

Spring Boot:

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"
    );
}

WebSocketController

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);
}

Angular 6:

TestComponet

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);
    }
  });
}

Я думал, что это будет работать, просто добавив lib клиента sockjs в автономный достижимый путь, но я получаю предупреждение

Веб-сокет закрывается до установления соединения

, за которым следует

"GET http://192.168.1.45:8080/socket/327/si5osugt/jsonp?c=jp.a3xdefl net :: ERR_ABORTED 404 (Не найдено) "

Библиотека прекрасно работает с подключением к Интернету, но мне нужно, чтобы она работала как в режиме онлайн, так и в автономном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...