theturtle32 / WebSocket-Node

A WebSocket Implementation for Node.JS (Draft -08 through the final RFC 6455)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Custom ReasonCode not passed in closeEvent

hazaart opened this issue · 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.

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.

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

this project might be dead

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