2.0.0
Breaking changes
- Dropped support for Node.js < 4.5.0.
- The
new
operator is now required to create all instances as we moved to ES6
classes. - Error messages have been simplified.
- The
clients
property of theWebSocketServer
is no longer anArray
but a
Set
and is only set if theclientTracking
option is truthy (#806). - The default HTTP status message is now used when handshake fails (41e7cae).
- Removed support for the Hixie-76 version of the protocol (#871).
- Removed ability to specify different paths for multiple
WebSocketServer
s
when binding them to the same underlying HTTP/s server (#885). - Removed
WebSocket.prototype.stream()
and ability to pass a readable stream
toWebSocket.prototype.send()
(#875). - Removed callback argument from
handleProtocols
handler (#890). - Removed
supports
property fromWebSocket
(#918). - Removed
WebSocket.createServer()
,WebSocket.createConnection()
, and
WebSocket.connect()
factory functions (#926). - The second argument of
WebSocket.prototype.ping()
and
WebSocket.prototype.pong()
is no longer an options object but a boolean
(#951). - An error is emitted if
WebSocket.prototype.close()
is called before the
connection is established (#956).
The following breaking changes only apply if you required the mentioned classes
directly.
- Removed
Sender
inheritance fromEventEmitter
(#861). - Removed
BufferPool
class (73ab370). - Made
extensions
a required argument for theReceiver
constructor (5f53194). receiver.onbinary
andreceiver.ontext
have been merged into
receiver.onmessage
(#939).
Features
- Added ability to set TCP backlog for
WebSocketServer
(#795). - Added
checkServerIdentity
option toWebSocket
(#701). - Added a
threshold
option for permessage-deflate to only compress messages
whose size is bigger thanthreshold
(6b3904b). - Added
shouldHandle
method toWebSocketServer
to see if a request should
be accepted or rejected. This method can be overridden by the user if a
custom logic is desired (6472425). - Added
removeEventListener
method toWebSocket
(078e96a). - Added
family
option toWebSocket
(#962).
Bug fixes
- Fixed an issue that prevented permessage-deflate options from being correctly
handled (#744). - All
error
events are now emitted with a properError
instance (#789). - Fixed an issue that could cause a stack overflow crash (#810).
- Added 1012 and 1013 to the list of allowed close codes (b58f688).
- Fixed an issue that prevented the connection from being closed when path
validation failed (#534). - Fixed an issue where the
fin
option ofWebSocket.prototype.send()
was
unconditionally set totrue
(ea50be7). - Fixed an issue that prevented the total length of a fragmented message from
being correctly calculated (545635d). - Fixed an issue where
zlib.flush()
was called with a wrong flush level
(#733). - The callback of
WebSocketServer.prototype.close()
is now invoked when the
close
event is emitted by the underlying HTTP/s server (#892). - Fixed an issue that prevented the server from listening on IPv6 addresses
with default settings (dcdc652). - Fixed an issue where the
connection
event was emitted even if the client
closed the connection during the handshake process (04530ad). - The masking key is now generated using
crypto.randomBytes()
instead of
Math.random()
(7253f06). - Fixed an issue that, under particular circumstances, caused data to be
discarded (#945). - Fixed an issue that prevented clients from being removed from the
clients
set (#955). WebSocket.prototype.close()
now works as expected if called on the client
before the connection is established (#956).WebSocket.prototype.send()
no longer mutates the options object (#968).- The
bufferedAmount
getter now takes into account the data queued in the
sender (#971).