diff --git a/lib/validation.js b/lib/validation.js index 479a7db08..32db5a570 100644 --- a/lib/validation.js +++ b/lib/validation.js @@ -21,7 +21,7 @@ try { exports.isValidStatusCode = (code) => { return ( (code >= 1000 && - code <= 1013 && + code <= 1014 && code !== 1004 && code !== 1005 && code !== 1006) || diff --git a/test/websocket.test.js b/test/websocket.test.js index 4caf57fcf..b5b265248 100644 --- a/test/websocket.test.js +++ b/test/websocket.test.js @@ -1532,6 +1532,19 @@ describe('WebSocket', () => { wss.on('connection', (ws) => ws.close(1013)); }); + it('allows close code 1014', (done) => { + const wss = new WebSocket.Server({ port: 0 }, () => { + const ws = new WebSocket(`ws://localhost:${wss.address().port}`); + + ws.on('close', (code) => { + assert.strictEqual(code, 1014); + wss.close(done); + }); + }); + + wss.on('connection', (ws) => ws.close(1014)); + }); + it('does nothing if `readyState` is `CLOSED`', (done) => { const wss = new WebSocket.Server({ port: 0 }, () => { const ws = new WebSocket(`ws://localhost:${wss.address().port}`);