Async WebSocket client for PHP based on Amp.
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
.
This release is compatible with amphp/http-client@^5
and amphp/websocket@^2
. See the release notes of these libraries for further change notes.
Similar to v1
, a Websocket connection is created using Amp\Websocket\Client\connect()
or using an instance of WebsocketConnector
, calling WebsocketConnector::connect()
. The returned WebsocketConnection
then is used to send and receive WebSocket messages.
Websocket
as a prefix to avoid name collisions with similarly named classes in other packages which are frequently used together. For example, Connection
is now WebsocketConnection
.Rfc6455ConnectionFactory
instance provided when constructing a Rfc6455Connector
.WebsocketConnector
instance may be accessed and set via Amp\Websocket\Client\websocketConnector()
.amphp/websocket@v2
and amphp/http-client@v5
amphp/http@v2
WebsocketHandshake
amphp/socket@v2
and amphp/[email protected]
Rfc6455ConnectionFactory
constructor to use an instance of WebsocketParserFactory
, moving some configuration options to Rfc6455ParserFactory
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
.
Websocket
as a prefix to several classes:
Connection
renamed to WebsocketConnection
ConnectionFactory
renamed to WebsocketConnectionFactory
Connector
renamed to WebsocketConnector
ConnectionException
renamed to WebsocketConnectException
Handshake
renamed to WebsocketHandshake
connector
function to websocketConnector
/docs
in .gitattributes
to avoid broken symlink (#38)Full Changelog: https://github.com/amphp/websocket-client/compare/v1.0.0...v1.0.1
Connection
. Now the Response
object is available with Connection::getResponse()
, which provides access to the response headers and other response data.connector()
function, so there is no longer a global Connector
object.Handshake::withHeaders()
to remove all prior set headers as expected.ConnectContext
parameter to connect()
function.ConnectionException
now extends HttpException
from amphp/http-client
.This library has been refactored to use the new amphp/websocket
library containing components that can be shared between server and clients.
The simplest way to use this library is with the connect()
function to initiate a WebSocket connection.
$connection = yield Amp\Websocket\Client\connect('ws://localhost:1337/broadcast');
yield $connection->send('Hello!');
/** @var Amp\Websocket\Message $message */
while ($message = yield $connection->receive()) {
$payload = yield $message->buffer();
// $payload now contains the entire message content
yield $connection->send('Received message with length ' . strlen($payload));
}
Custom request headers and connections options can be set using the Handshake
class and passing this object to connect()
instead of a string URI. Connection behavior can be further customized by using an instance of Connector
to establish a connection instead of the connect()
function.
WebSocket clients are now represented by Connection
, which extends the Client
object from amphp/websocket
. This object contains several methods for getting information about the client, fetching the headers returned in the server response, and sending/receiving messages.
HttpClient
from amphp/http-client
to send connection requests. As such, Rfc6455Connector
requires an instance of HttpClient
when constructed. The client may have various interceptors attached to modify behavior when connecting.league/uri@^6
, subsequently PHP 7.2+ is now required.This library has been refactored to use the new amphp/websocket
library containing components that can be shared between server and clients.
Note: This is a pre-release, there might be breaking changes in the final stable version.
The simplest way to use this library is with the connect()
function to initiate a WebSocket connection.
$connection = yield Amp\Websocket\Client\connect('ws://localhost:1337/broadcast');
yield $connection->send('Hello!');
/** @var Amp\Websocket\Message $message */
while ($message = yield $connection->receive()) {
$payload = yield $message->buffer();
// $payload now contains the entire message content
yield $connection->send('Received message with length ' . strlen($payload));
}
Custom request headers and connections options can be set using the Handshake
class and passing this object to connect()
instead of a string URI. Connection behavior can be customized using the Connector
interface or by extending the existing Rfc6455Connector
class.
WebSocket clients are now represented by Connection
, which extends the Client
object from amphp/websocket
. This object contains several methods for getting information about the client, fetching the headers returned in the server response, and sending/receiving messages.