Angular6: проблема с подключением к веб-сокету при загрузке - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть соединение с веб-сокетом, которое при загрузке иногда выдает ошибку. Хотя после перезагрузки страницы соединение восстанавливается. Но я не хочу перезагрузки в первую очередь.

Ниже мой сервис веб-сокетов для открытия соединения

     @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 и знает исправление?

websocket error

...