Skip to content

2.0.0

Compare
Choose a tag to compare
@lpinca lpinca released this 30 Jan 11:47
· 769 commits to master since this release

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 the WebSocketServer is no longer an Array but a
    Set and is only set if the clientTracking 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 WebSocketServers
    when binding them to the same underlying HTTP/s server (#885).
  • Removed WebSocket.prototype.stream() and ability to pass a readable stream
    to WebSocket.prototype.send() (#875).
  • Removed callback argument from handleProtocols handler (#890).
  • Removed supports property from WebSocket (#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 from EventEmitter (#861).
  • Removed BufferPool class (73ab370).
  • Made extensions a required argument for the Receiver constructor (5f53194).
  • receiver.onbinary and receiver.ontext have been merged into
    receiver.onmessage (#939).

Features

  • Added ability to set TCP backlog for WebSocketServer (#795).
  • Added checkServerIdentity option to WebSocket (#701).
  • Added a threshold option for permessage-deflate to only compress messages
    whose size is bigger than threshold (6b3904b).
  • Added shouldHandle method to WebSocketServer 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 to WebSocket (078e96a).
  • Added family option to WebSocket (#962).

Bug fixes

  • Fixed an issue that prevented permessage-deflate options from being correctly
    handled (#744).
  • All error events are now emitted with a proper Error 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 of WebSocket.prototype.send() was
    unconditionally set to true (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).