Client • Server • Message • Classes • Examples • Changelog • Contributing
API for involved classes.
Client
WebSocket\Client
Main class for WebSocket client.
class WebSocket\Client implements Psr\Log\LoggerAwareInterface
{
// Magic methods
public function __construct(Psr\Http\Message\UriInterface|string $uri, array $options = []);
public function __toString(): string;
// Configuration
public function setStreamFactory(Phrity\Net\StreamFactory $streamFactory): void;
public function setTimeout(int $timeout): void;
public function setFragmentSize(int $fragment_size): self;
public function getFragmentSize(): int;
public function setLogger(Psr\Log\LoggerInterface $logger): void;
// Messaging operations
public function text(string $payload): void;
public function binary(string $payload): void;
public function ping(string $payload = ''): void;
public function pong(string $payload = ''): void;
public function close(int $status = 1000, string $message = 'ttfn'): void;
public function send(WebSocket\Message\Message|string, string $opcode = 'text', bool|null $masked = null): void;
public function receive(): WebSocket\Message\Message|null;
// Connection management
public function isConnected(): bool;
public function connect(): void;
public function disconnect(): void;
// Connection state
public function getCloseStatus(): int|null;
public function getName(): string|null;
public function getRemoteName(): string|null;
public function getHandshakeResponse(): WebSocket\Http\Response|null;
}
Server
WebSocket\Server
Main class for WebSocket server.
class WebSocket\Server implements Psr\Log\LoggerAwareInterface
{
// Magic methods
public function __construct(array $options = []);
public function __toString(): string;
// Configuration
public function setStreamFactory(Phrity\Net\StreamFactory $streamFactory): void;
public function setTimeout(int $timeout): void;
public function setFragmentSize(int $fragment_size): self;
public function getFragmentSize(): int;
public function setLogger(Psr\Log\LoggerInterface $logger): void;
// Messaging operations
public function text(string $payload): WebSocket\Message\Text;
public function binary(string $payload): WebSocket\Message\Binary;
public function ping(string $payload = ''): WebSocket\Message\Ping;
public function pong(string $payload = ''): WebSocket\Message\Pong;
public function close(int $status = 1000, string $message = 'ttfn'): WebSocket\Message\Close;
public function close(int $status = 1000, string $message = 'ttfn'): void;
public function send(WebSocket\Message\Message): WebSocket\Message\Message;
// Connection management
public function isConnected(): bool;
public function connect(): void;
public function disconnect(): void;
public function accept(): bool;
// Connection state
public function getCloseStatus(): int|null;
public function getName(): string|null;
public function getRemoteName(): string|null;
public function getPort(): int
public function getHandshakeRequest(): WebSocket\Http\Request|null;
}
Core internals
WebSocket\Connection
A connection between client and server.
class WebSocket\Connection implements Psr\Log\LoggerAwareInterface
{
// Construct & Destruct
public function __construct(Phrity\Net\SocketStream $stream, array $options = []);
public function __destruct();
// Configuration
public function setStreamFactory(Phrity\Net\StreamFactory $streamFactory): void;
public function setTimeout(int $seconds, int $microseconds = 0): void;
public function setOptions(array $options = []): void;
public function setLogger(Psr\Log\LoggerInterface $logger): void;
// Messaging operations
public function text(string $payload): WebSocket\Message\Text;
public function binary(string $payload): WebSocket\Message\Binary;
public function ping(string $payload = ''): WebSocket\Message\Ping;
public function pong(string $payload = ''): WebSocket\Message\Pong;
public function close(int $status = 1000, string $message = 'ttfn'): WebSocket\Message\Close;
public function send(WebSocket\Message\Message): WebSocket\Message\Message;
public function receive(): WebSocket\Message\Message;
// Connection management
public function isConnected(): bool;
public function disconnect(): bool;
public function close(int $status = 1000, string $message = 'ttfn'): void;
// Connection state
public function getCloseStatus(): int|null;
public function getName(): string|null;
public function getRemoteName(): string|null;
// WebSocket Message methods
public function pushMessage(WebSocket\Message\Message $message, bool|null $masked = null): void;
public function pullMessage(): WebSocket\Message\Message;
// HTTP Message methods
public function pushHttp(HWebSocket\Http\Message $message): void;
public function pullHttp(): HWebSocket\Http\Message;
}
WebSocket Messages
WebSocket\Message\Message
A message sent or received over WebSocket connection.
abstract class WebSocket\Messages\Messages
{
public function __construct(string $payload = '');
public function getOpcode(): string;
public function getLength(): int;
public function getTimestamp(): \DateTime;
public function getContent(): string;
public function setContent(string $payload = ''): void;
public function hasContent(): bool;
public function __toString(): string;
public function getFrames(int $framesize = 4096): array;
}
WebSocket\Message\Binary
WebSocket message of "binary" type.
class WebSocket\Messages\Binary extends WebSocket\Messages\Message
{
// @see WebSocket\Message\Message
}
WebSocket\Message\Close
WebSocket message of "close"" type.
class WebSocket\Messages\Close extends WebSocket\Messages\Message
{
// @see WebSocket\Message\Message
}
WebSocket\Message\Ping
WebSocket message of "ping"" type.
class WebSocket\Messages\Ping extends WebSocket\Messages\Message
{
// @see WebSocket\Message\Message
}
WebSocket\Message\Pong
WebSocket message of "pong"" type.
class WebSocket\Messages\Pong extends WebSocket\Messages\Message
{
// @see WebSocket\Message\Message
}
WebSocket\Message\Text
WebSocket message of "text"" type.
class WebSocket\Messages\Text extends WebSocket\Messages\Message
{
// @see WebSocket\Message\Message
}
WebSocket\Message\Factory
Factory for creating WebSocket messages.
class WebSocket\Messages\Factory
{
public function create(string $opcode, string $payload = ''): WebSocket\Message\Message;
}
WebSocket\Message\MessageHandler
Handler for WebSocket messages.
class WebSocket\Messages\MessageHandler implements Psr\Log\LoggerAwareInterface
{
public function __construct(WebSocket\Frame\FrameHandler $frameHandler);
public function setLogger(Psr\Log\LoggerInterface $logger): void;
public function push(WebSocket\Message\Message $message, bool $masked, int $size = self::DEFAULT_SIZE): void;
public function pull(): WebSocket\Message\Message;
}
Frames
WebSocket\Frame\Frame
A frame sent or received on stream. A WebSocket message can contain 1 to many frames.
class WebSocket\Frame\Frame
{
public function __construct(string $opcode, string $payload, bool $final);
public function isFinal(): bool;
public function isContinuation(): bool;
public function getOpcode(): string;
public function getPayload(): string;
public function getPayloadLength(): int;
}
WebSocket\Frame\FrameHandler
Handler that read and write frames to stream.
class WebSocket\Frame\FrameHandler implements Psr\Log\LoggerAwareInterface
{
public function __construct(Phrity\Net\SocketStream $stream);
public function setLogger(Psr\Log\LoggerInterface $logger): void;
public function pull(): WebSocket\Frame\Frame;
public function push(WebSocket\Frame\Frame $frame, bool $masked): int;
}
HTTP
The HTTP functions are only used during handshake, when client and server upgrade to WebSocket connection.
WebSocket\Http\Message
A HTTP message sent or received during handshake procedure.
abstract class WebSocket\Http\Message implements Psr\Http\Message\MessageInterface
{
public function getProtocolVersion(): string;
public function withProtocolVersion(string $version): self;
public function getHeaders(): array;
public function hasHeader($name): bool;
public function getHeader(string $name): array;
public function getHeaderLine(string $name): string;
public function withHeader(string $name, string|array $value): self;
public function withAddedHeader(string $name, string|array $value): self;
public function withoutHeader(string $name): self;
public function getAsArray(): array;
}
WebSocket\Http\Request
A HTTP request sent during handshake procedure.
class WebSocket\Http\Request extends WebSocket\Http\Message implements Psr\Http\Message\RequestInterface
{
public function __construct(string $method = 'GET', Psr\Http\Message\UriInterface|string|null $uri = null);
public function getRequestTarget(): string;
public function withRequestTarget(mixed $requestTarget): self;
public function getMethod(): string;
public function withMethod(string $method): self;
public function getUri(): Psr\Http\Message\UriInterface;
public function withUri(Psr\Http\Message\UriInterface $uri, bool $preserveHost = false): self;
public function getAsArray(): array;
// @see WebSocket\Http\Message
}
WebSocket\Http\Request
A HTTP request as received by server during handshake procedure.
class WebSocket\Http\ServerRequest extends WebSocket\Http\Request implements Psr\Http\Message\ServerRequestInterface
{
public function getQueryParams(): array;
// @see WebSocket\Http\Request
}
WebSocket\Http\Response
A HTTP response sent or received during handshake procedure.
class WebSocket\Http\Response extends WebSocket\Http\Message implements Psr\Http\Message\ResponseInterface
{
public function __construct(int $code = 200, string $reasonPhrase = '');
public function getStatusCode(): int;
public function withStatus(int $code, string $reasonPhrase = ''): self;
public function getReasonPhrase(): string;
public function getAsArray(): array;
// @see WebSocket\Http\Message
}
WebSocket\Http\HttpHandler
Handler that read and write HTTP messages on stream.
class WebSocket\Http\HttpHandler implements Psr\Log\LoggerAwareInterface
{
public function __construct(Phrity\Net\SocketStream $stream);
public function setLogger(Psr\Log\LoggerInterface $logger): void;
public function pull(): Psr\Http\Message\MessageInterface;
public function push(Psr\Http\Message\MessageInterface $message): int;
}
Exceptions
WebSocket\Exception
Abstract base class for WebSocket exceptions.
abstract class WebSocket\Exception extends Exception
{
// @see https://www.php.net/manual/en/class.exception
}
WebSocket\BadOpcodeException
Thrown when bad opcode is sent or received.
class WebSocket\BadOpcodeException extends Exception
{
public function __construct(string $message, int $code = self::BAD_OPCODE, Throwable $prev = null);
// @see Exception
}
WebSocket\BadUriException
Thrown when invalid URI is provided.
class WebSocket\BadUriException extends Exception
{
// @see Exception
}
WebSocket\ConnectionException
Thrown when connection operation fails.
class WebSocket\ConnectionException extends Exception
{
public function __construct(string $message, int $code = 0, array $data = [], Throwable $prev = null);
public function getData(): array;
// @see Exception
}
WebSocket\TimeoutException
Thrown when connection has timed out.
class WebSocket\TimeoutException extends ConnectionException
{
// @see ConnectionException
}