Breaking changes
-
The
WebSocket
constructor now throws aSyntaxError
if any of the
subprotocol names are invalid or duplicated (0aecf0c). -
The server now aborts the opening handshake if an invalid
Sec-WebSocket-Protocol
header field value is received (1877dde). -
The
protocols
argument ofhandleProtocols
hook is no longer anArray
but
aSet
(1877dde). -
The opening handshake is now aborted if the
Sec-WebSocket-Extensions
header
field value is empty or it begins or ends with a white space (e814110). -
Dropped support for Node.js < 10.0.0 (552b506).
-
The
WebSocket
constructor now throws aSyntaxError
if the connection URL
contains a fragment identifier or if the URL's protocol is not one of'ws:'
,
'wss:'
, or'ws+unix:'
(ebea038). -
Text messages and close reasons are no longer decoded to strings. They are
passed asBuffer
s to the listeners of their respective events. The listeners
of the'message'
event now take a boolean argument specifying whether or not
the message is binary (e173423).Existing code can be migrated by decoding the buffer explicitly.
websocket.on('message', function message(data, isBinary) { const message = isBinary ? data : data.toString(); // Continue as before. }); websocket.on('close', function close(code, data) { const reason = data.toString(); // Continue as before. });
-
The package now uses an ES module wrapper (78adf5f).
-
WebSocketServer.prototype.close()
no longer closes existing connections
(df7de57).Existing code can be migrated by closing the connections manually.
websocketServer.close(); for (const ws of websocketServer.clients) { ws.terminate(); }
-
The callback of
WebSocketServer.prototype.close()
is now called with an
error if the server is already closed (abde9cf). -
WebSocket.prototype.addEventListener()
is now a noop if thetype
argument
is not one of'close'
,'error'
,'message'
, or'open'
(9558ed1). -
WebSocket.prototype.removeEventListener()
now only removes listeners added
withWebSocket.prototype.addEventListener()
and only one at time (ea95d9c). -
The value of the
onclose
,onerror
,onmessage
, andonopen
properties is
nownull
if the respective event handler is not set (6756cf5). -
The
OpenEvent
class has been removed (21e6500).
Bug fixes
- The event listeners added via handler properties are now independent from the
event listeners added withWebSocket.prototype.addEventListener()
(0b21c03).