RXJS: How to get connect event? retrywhen: how to hook into execution?

251 Views Asked by At

When Angular tries to connect, I want to show "Connecting". I can do it on first connect, but I don't know how to do it when using retryWhen(). I need to hook into the actual execution and then do:

this.connectionStatus = "Connecting"

Current code:

    this.connectionStatus = "Connecting";

    let socket = new WebSocketSubject(..);

    this.socket
      .pipe(retryWhen(errors =>
        errors.pipe(
          tap(val => {
            console.log("Retry in 10 sec", val);
          }),
          delay(10000)
        )))
      .subscribe(..);
1

There are 1 best solutions below

1
On BEST ANSWER

Just set the status after delay. retryWhen expect you to return an observable and when this observable emits it'll start retrying connecting i.e start retrying after delay

  errors.pipe(
          tap(val => {
            console.log("Retry in 10 sec", val);
          }),
          delay(10000),
          tap(()=>this.connectionStatus = "Connecting"
)
        )))