Why closing websocket connection in Chrome by javascript is not immediately?

Viewed 127

I tried to use rxjs webSocket to connect server. When I use .complete() function, the closingObserver is triggered immediately. But I received CloseEvent is almost 1 minute later. So, how can I get the CloseEvent immediately?

Here is an example.

class SomeService {
  private wsSource$ = webSocket({
    url: "ws://xxxxxx.com/api/v1/xxx",
    openObserver: this.openObserver,
    closingObserver: this.closingObserver,
  });

  connect() {
    this.wsSource$.subscribe({
      next: (e) => console.log(e),
      error: (err) => console.log(err),
      complete: () => console.log("complete!!!")
    });
  }

  disconnect() {
    this.wsSource$.complete();
  }
}
  1. After connect(), Chrome will log the CloseEvent after almost 1 minute.
  2. It is not logged by observer complete function, it is logged by error function.
0 Answers
Related