stomp-js / ng2-stompjs

Angular 6 and 7 - Stomp service over Websockets
https://stomp-js.github.io/
Apache License 2.0
182 stars 32 forks source link

Error: read ECONRESET when running ng serve #239

Closed schimini closed 3 years ago

schimini commented 3 years ago

In node if a socket does not have an error handler the process dies.

I understand my server still has issues but it shouldn't kill the angular bundler. I tried setting every error handler possible with no success.

      this.stompService.stompClient.onWebSocketClose = (error) => console.log(error);
      this.stompService.stompClient.onWebSocketError = (error) => console.log(error);
      this.stompService.stompClient.webSocket.onerror = (error) => console.log(error);
      this.stompService.webSocketErrors$.subscribe((error) => console.log(error));

      this.stompService.activate();
events.js:287
      throw er; // Unhandled 'error' event
      ^

Error: read ECONNRESET
    at TCP.onStreamRead (internal/stream_base_commons.js:205:27)
Emitted 'error' event on Socket instance at:
    at emitErrorNT (internal/streams/destroy.js:92:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:21) {
  errno: 'ECONNRESET',
  code: 'ECONNRESET',
  syscall: 'read'
}

Is there a correct way to avoid this error?

kum-deepak commented 3 years ago

In nodejs, this library relies on some implementation of Websockets. The underlying layer should have trapped this error and issued the error and onclose callbacks on the WebSocket object.

Currently, supported ones are https://www.npmjs.com/package/ws and https://www.npmjs.com/package/websocket. You may try switching among these to check if it helps. See https://www.npmjs.com/package/websocket

Raising an issue with the WebSocket library that you are using will be recommended as well.

There is one more option, based on your needs. It is possible to wrap a TCP (net module of nodejs) stream with a thin layer to make this library communicate with the broker over STOMP (not WebStomp which is the default). I have some, really old, sample code. Please let me know if you would like to try this approach.

schimini commented 3 years ago

First of all thanks for the fast reply. I was in a rush yesterday and couldn't explain better.

The error has weird properties: it is clearly a nodejs looking error, and it happens in my shell when running ng serve. My STOMP server was not properly configured and i fixed it know so it doesn't have a problem connecting now. The thing is if the server is down for example, that error was triggered which i don't understand. This library runs on the browser, no portion of the code runs on compile time, so it seems off that triggering activate would kill the bundler instead of crashing the browser window right?

kum-deepak commented 3 years ago

Thanks for the longer text. That indeed seems weired. I could not believe that doing something on the browser code could kill the bundler. :smile:

I do not see action items here. So, I will close this issue though.

schimini commented 3 years ago

I know it seems surreal but it does indeed happen! If I can throw a decent demo together I'll let you know. Until that, godspeed. Nice job with the library. Thank you