При использовании 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'})
)