Skip to content

Unable to use nhooyr/websocket in WASM running in Node.js: nhooyr/websocket should process 'error' event #400

Closed

Description

@sza-1

Probably websocket#Conn.init should call c.ws.OnError to subscribe on and process WebSocket#error event.

The issue is the following:

https://github.com/websockets/ws is the most popular WebSocket implementation for the Node.js. It is based on EventEmitter, which throws an exception on any unhandled connection error. Actually it emits error event and then close event. If there is no event listener for error event, then EventEmitter throws an exception and Node.js crashes by default (this behaviour may be fixed with node:domain, but it is deprecated in Node.js 20.5.0). Writers of JavaScript code unable to add an error listener, since nhooyr/websocket creates WebSocket object internally, so it makes nhooyr/websocket pretty unusable in Node.js in case of invalid WSS URL or any transport error.

Probably adding of websocket#Conn.releaseOnClose and calling c.ws.OnError should fix the issue.

Found on Node.js 20.5.0, websockets/ws 8.13.0 and nhooyr/websocket 1.8.7.

Activity

  1. added this to the v1.8.8 milestone on Sep 28, 2023
  2. nhooyr commented on Sep 28, 2023

    @nhooyr
    Contributor

    Thanks for reporting. Will fix in next release.

  3. added a commit that references this issue on Oct 19, 2023
    e361137
  4. nhooyr commented on Oct 19, 2023

    @nhooyr
    Contributor

    Fixed in dev. Let me know if it looks good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions