У меня есть соединение с веб-сокетом, которое при загрузке иногда выдает ошибку. Хотя после перезагрузки страницы соединение восстанавливается. Но я не хочу перезагрузки в первую очередь.
Ниже мой сервис веб-сокетов для открытия соединения
@Injectable()
export class WebSocketService {
private subject: Subject<MessageEvent>;
constructor() {
}
public connect(url: string): Subject<MessageEvent> {
if (!this.subject) {
this.subject = this.create(url);
}
return this.subject;
}
private create(url: string): Subject<MessageEvent> {
const ws = new WebSocket(url);
const observable = Observable.create(
(obs: Observer<MessageEvent>) => {
ws.onmessage = obs.next.bind(obs);
ws.onerror = obs.error.bind(obs);
ws.onclose = obs.complete.bind(obs);
return ws.close.bind(ws);
}).pipe(share());
const observer = {
next: (data: Object) => {
if (ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify(data));
}
}
};
return Subject.create(observer, observable);
}
Ниже я подписываюсь на сервис websocket
private subscrib(): void {
this.$messageQueue = <Subject<QueueDetails>>this.ws
.connect(this.wsurl)
.pipe(
map((response: MessageEvent): QueueDetails => {
const data = JSON.parse(response.data);
})
);
}
websocket connection to 'wss://someurl' failed. Error during websocket handshake: Invalid status line.
Кто-нибудь сталкивался с подобной ошибкой в angular и знает исправление?