Releases: amphp/websocket
Releases · amphp/websocket
2.0.4
2.0.3
What's Changed
WebsocketException
now extendsAmp\ByteStream\StreamException
to avoid violating theReadableStream
interface by throwing a non-StreamException
from a stream method.
Full Changelog: v2.0.2...v2.0.3
2.0.2
2.0.1
2.0.0
Stable release compatible with AMPHP v3 and fibers! 🎉
As with other libraries compatible with AMPHP v3, most cases of parameters or returns of Promise<ResolutionType>
have been replaced with ResolutionType
.
- Renamed most classes and interfaces to add
Websocket
as a prefix to avoid name collisions with similarly named classes in other packages which are frequently used together. For example,Client
is nowWebsocketClient
,Message
is nowWebsocketMessage
. WebsocketMessage
(formerlyMessage
) now implementsStringable
, allowing the object to be simply cast to a string to buffer the contents of a message. Max message limits set on the client will apply.- Added
WebsocketException
as base class forWebsocketClosedException
as well as a new exception,WebsocketParserException
. - The
Options
object has been removed. Various configurations options previously available in this class can now be specified by constructor arguments to various factories, such asRfc6455ParserFactory
in this library or the client factories found inamphp/websocket-server
andamphp/websocket-client
. - Move compression related classes into a
Compression
sub-namespace. - Split the parser and frame compiler from the client implementation, now found in the
Parser
sub-namespace. This change will allow for greater visibility and logging of activity on a websocket connection. - Added
WebsocketHeartbeatQueue
andWebsocketRateLimit
interfaces with implementationsPeriodicHeartbeatQueue
andConstantRateLimit
. These interfaces and implementations offer greater extensibility and fine-tuning of connection behavior, while maintaining easy setup for most applications. ClientMetadata
has been removed in favor ofWebsocketCount
andWebsocketTimestamp
enums coupled with methods on aWebsocketClient
,getCount()
andgetTimestamp()
, to query for connection info.- The callback provided to
WebsocketClient::onClose()
is now invoked with two arguments – the Websocket client ID and an instance ofWebsocketCloseInfo
providing the close code, reason, time, and whom initiated the close.
2.0.0 Beta 4
- Added
WebsocketParser
,WebsocketParserFactory
,Rfc6455Parser
, andWebsocketFrameHandler
, splitting the frame parser fromRfc6455Client
2.0.0 Beta 3
- Added compatibility with Revolt v1.x
2.0.0 Beta 2
- Fixed a warning being issued if invalid compressed frame data was received
- Fixed issue where a slow consuming client would delay closing the connection
- Moved default value constants from
WebsocketClient
interface toRfc5455Client
- Changed
ClientMetadata::$lastHeartbeatAt
to be set when the pong frame is received rather than when the ping frame is sent
2.0.0 Beta 1
Initial release compatible with AMPHP v3.
As with other libraries compatible with AMPHP v3, most cases of parameters or returns of Promise<ResolutionType>
have been replaced with ResolutionType
.
- Removed the
Options
object. Settings that were set using properties on theOptions
object are now parameters to client factories in thewebsocket-client
andwebsocket-server
libraries or theHeartbeatQueue
andRateLimiter
interfaces - Added
HeartbeatQueue
andRateLimiter
interfaces with implementationsDefaultHeartbeatQueue
andDefaultRateLimiter
– these objects replace some of the functionality that was only contained withinRfc6455Client
and controlled viaOptions
Opcode
is now anenum
- Added
Websocket
as a prefix to several classes:Client
renamed toWebsocketClient
ClientMetadata
renamed toWebsocketClientMetadata
Message
renamed toWebsocketMessage
WebsocketClient
now extendsAmp\Closable
isConnected()
method replaced withisClosed()
WebsocketClient::receive()
now supports cancellation. Cancelled receives do not discard a message, a subsequent call toreceive()
will still return the next message received from the client- Closures provided to
WebsocketClient::onClose()
are provided an instance ofWebsocketClientMetadata
instead of the client object, close code, and reason. The code and reason are available on the metadata object.
1.0.3
- Added
GOING_AWAY
to the list of normal close codes, which will causeClient::receive()
to return null instead of throwing an exception if a browser sends this code when navigating away from a page - Fixed undefined array access in rare case where the event loop is exited after receiving a message on the websocket and then re-entered at a later time (amphp/websocket-client#39)