WebSocket-Node icon indicating copy to clipboard operation
WebSocket-Node copied to clipboard

Custom ReasonCode not passed in closeEvent

Open hazaart opened this issue 3 years ago • 5 comments

The spec for websocket provides a range for custom reason codes to be sent when closing the websocket (4000-4999). When closing a websocket connection from the client passing a custom reason code, the code is not received within the onclose event.

Code on websocketServer:

    this._httpServer = createServer();
    this._httpServer.listen(port, () => { });
    this._websocketServer = new websocketServer({ httpServer: this._httpServer });

    console.log(`Websocket server now listenening on port ${port}`);

    this._websocketServer.on('request',
        (request) => {
            const connection = request.accept(undefined, request.origin);

            connection.on('message', function (message) {
                //DoSomething
            });
        }
    );

Code on client side: See JSFiddle https://jsfiddle.net/254megph/2/

websocket.close(4000, "manual close");

When closing the connection by clicking the button the JSFiddle, the onClose event is fired with reason code 1000 instead of 4000.

hazaart avatar Jul 05 '21 10:07 hazaart

It seems as though it always sends a close normal code so long as it's valid

Do you know off hand if it should always return what it received? This could be a relatively easy fix but I don't want to go against the spec.

formula1 avatar Feb 25 '22 03:02 formula1

It seems as though it always sends a close normal code so long as it's valid

What's the point in providing a code then?

avoliva avatar Apr 20 '22 17:04 avoliva

When using the JS WebSocket implementation and providing a code and reason, the WebSocket closes with that code and reason in the close event. This doesn't appear to be the case in this library

avoliva avatar Apr 21 '22 01:04 avoliva

this project might be dead

formula1 avatar Apr 22 '22 07:04 formula1

From memory I don't think there's been discussion about supporting custom codes over the history of this module. Pretty sure the code support is based upon the "required" parts of the spec: https://kapeli.com/cheat_sheets/WebSocket_Status_Codes.docset/Contents/Resources/Documents/index

rgillan avatar Nov 23 '23 22:11 rgillan