Websocket - sockjs - InvalidStateError: соединение еще не установлено - PullRequest
0 голосов
/ 19 октября 2018

При использовании stomp.js и sockjs из Javascript я могу хорошо подключиться к бэкэнду Spring Boot.

При использовании stompjs и sockjs с Angular5 я получаю следующие ошибки:

InvalidStateError: Соединение еще не установлено

Есть ли обходной путь?Простое добавление sockjs.min.js, , как упоминалось в этом посте , не помогло.

Подробный журнал:

Настройка подключения / 1 main.3388a5e3a20e64e3bdb8.bundle.js: 1 Настройка подключения / 2 main.3388a5e3a20e64e3bdb8.bundle.js: 1 Переход кподписаться ... main.3388a5e3a20e64e3bdb8.bundle.js: 1 Открытие веб-сокета ... main.3388a5e3a20e64e3bdb8.bundle.js: 1 >>> ОТПРАВИТЬ назначение: /app/chat.addUser content-length: 29

{"sender": "me", "type": "JOIN"} main.3388a5e3a20e64e3bdb8.bundle.js: 1 Ошибка: Uncaught (в обещании): Ошибка: InvalidStateError: Соединение еще не было установлено Ошибка: InvalidStateError: Соединение еще не было установлено в r.send (scripts.d6f701ecf84f24372966.bundle.js: 1)

Мой код на английском языке (в переводе с Javascript):

 let ws = new SockJS(this.serverUrl);
    this.stompClient = Stomp.over(ws);
    let that = this;
    console.log('Setting up connection/2');
    console.log('Going to subscribe ... ');
    this.stompClient.connect({}, function (frame) {
      console.log('Going to subscribe ... ');
      that.stompClient.subscribe('/topic/public', (payload) => {
          console.log('Subscribe: Incoming message: ' + payload.body);
          if (payload.body) {
            let message = JSON.parse(payload.body);
            if (message.sender === 'MyBot') {
              this.createAndAddChat('you', message.content);
            } else {
              this.createAndAddChat('me', message.content);
            }
            console.log('New message arrived: ' + payload.body);
          }
        },
        error => {
          console.log( 'Subscribe: error: ' + error)
        },
        () => {
         console.log( 'Subscribe, On complete')
        });
    });
    this.stompClient.send("/app/chat.addUser", {},
      JSON.stringify({sender: 'me', type: 'JOIN'})
    )

1 Ответ

0 голосов
/ 20 октября 2018

Конечно - для установления соединения требуется некоторое время.Я слишком спешил отправить первое сообщение.Итак, через 1 секунду сообщение отправляется и принимается!

...