Documentation / Class Synopsis

Incomplete list of public API of core classes.

WebSocket

Client

class WebSocket\Client implements Psr\Log\LoggerAwareInterface, Stringable
{
    // Magic methods
    public function __construct(Psr\Http\Message\UriInterface|string $uri);
    public function __toString(): string;

    // Configuration
    public function setStreamFactory(Phrity\Net\StreamFactory $streamFactory): self;
    public function setLogger(Psr\Log\LoggerInterface $logger): void;
    public function setTimeout(int $timeout): self;
    public function getTimeout(): int;
    public function setFrameSize(int $frameSize): self;
    public function getFrameSize(): int;
    public function setPersistent(bool $persistent): self;
    public function setContext(array $context): self;
    public function addHeader(string $name, string $content): self;
    public function addMiddleware(WebSocket\Middleware\MiddlewareInterface $middleware): self;

    // Messaging operations
    public function send(WebSocket\Message\Message $message): WebSocket\Message\Message;
    public function receive(): WebSocket\Message\Message;
    public function text(string $message): WebSocket\Message\Text;
    public function binary(string $message): WebSocket\Message\Binary;
    public function ping(string $message = ''): WebSocket\Message\Ping;
    public function pong(string $message = ''): WebSocket\Message\Pong;
    public function close(int $status = 1000, string $message = 'ttfn'): WebSocket\Message\Close;

    // Listener operations
    public function start(): void;
    public function stop(): void;
    public function isRunning(): bool;

    // Connection management
    public function isConnected(): bool;
    public function isReadable(): bool;
    public function isWritable(): bool;
    public function connect(): void;
    public function disconnect(): void;

    // Connection wrapper methods
    public function getName(): string|null;
    public function getRemoteName(): string|null;
    public function getMeta(string $key): mixed;
    public function getHandshakeResponse(): WebSocket\Http\Response|null;

    // Listener methods
    public function onConnect(Closure $closure): self;
    public function onDisconnect(Closure $closure): self;
    public function onHandshake(Closure $closure): self;
    public function onText(Closure $closure): self;
    public function onBinary(Closure $closure): self;
    public function onPing(Closure $closure): self;
    public function onPong(Closure $closure): self;
    public function onClose(Closure $closure): self;
    public function onError(Closure $closure): self;
    public function onTick(Closure $closure): self;
}

Server

class WebSocket\Server implements Psr\Log\LoggerAwareInterface, Stringable
{
    // Magic methods
    public function __construct(int $port = 80, bool $ssl = false);
    public function __toString(): string;

    // Configuration
    public function setStreamFactory(Phrity\Net\StreamFactory $streamFactory): self;
    public function setLogger(Psr\Log\LoggerInterface $logger): void;
    public function setTimeout(int $timeout): self;
    public function getTimeout(): int;
    public function setFrameSize(int $frameSize): self;
    public function getFrameSize(): int;
    public function getPort(): int;
    public function getScheme(): string:
    public function isSsl(): bool;
    public function getConnectionCount(): int;
    public function getConnections(): array;
    public function getReadableConnections(): array;
    public function getWritableConnections(): array;
    public function addMiddleware(WebSocket\Middleware\MiddlewareInterface $middleware): self;
    public function setMaxConnections(int|null $maxConnections): self;

    // Messaging operations
    public function send(WebSocket\Message\Message $message): WebSocket\Message\Message;
    public function text(string $message): WebSocket\Message\Text;
    public function binary(string $message): WebSocket\Message\Binary;
    public function ping(string $message = ''): WebSocket\Message\Ping;
    public function pong(string $message = ''): WebSocket\Message\Pong;
    public function close(int $status = 1000, string $message = 'ttfn'): WebSocket\Message\Close;

    // Listener operations
    public function start(): void;
    public function stop(): void;
    public function isRunning(): bool;

    // Connection management
    public function shutdown(int $closeStatus = 1001): void;
    public function disconnect(): void;

    // Listener methods
    public function onConnect(Closure $closure): self;
    public function onDisconnect(Closure $closure): self;
    public function onHandshake(Closure $closure): self;
    public function onText(Closure $closure): self;
    public function onBinary(Closure $closure): self;
    public function onPing(Closure $closure): self;
    public function onPong(Closure $closure): self;
    public function onClose(Closure $closure): self;
    public function onError(Closure $closure): self;
    public function onTick(Closure $closure): self;
}

Connection

class WebSocket\Connection implements Psr\Log\LoggerAwareInterface, Stringable
{
    // Magic methods
    public function __construct(Phrity\Net\SocketStream $stream, bool $pushMasked, bool $pullMaskedRequired, bool $ssl = false);
    public function __destruct();
    public function __toString(): string;

    // Configuration
    public function setLogger(Psr\Log\LoggerInterface $logger): void;
    public function setTimeout(int $timeout): self;
    public function getTimeout(): int;
    public function setFrameSize(int $frameSize): self;
    public function getFrameSize(): int;
    public function addMiddleware(WebSocket\Middleware\MiddlewareInterface $middleware): self;

    // Connection management
    public function isConnected(): bool;
    public function isReadable(): bool;
    public function isWritable(): bool;
    public function disconnect(): self;
    public function closeRead(): self;
    public function closeWrite(): self;

    // Connection state
    public function getName(): string|null;
    public function getRemoteName(): string|null;
    public function setMeta(string $key, mixed $value): void;
    public function getMeta(string $key): mixed;
    public function tick(): void;

    // WebSocket Message methods
    public function send(WebSocket\Message\Message $message): WebSocket\Message\Message;
    public function pushMessage(WebSocket\Message\Message $message): WebSocket\Message\Message;
    public function pullMessage(): WebSocket\Message\Message;
    public function text(string $message): WebSocket\Message\Text;
    public function binary(string $message): WebSocket\Message\Binary;
    public function ping(string $message = ''): WebSocket\Message\Ping;
    public function pong(string $message = ''): WebSocket\Message\Pong;
    public function close(int $status = 1000, string $message = 'ttfn'): WebSocket\Message\Close;

    // HTTP Message methods
    public function pushHttp(WebSocket\Http\Message $message): WebSocket\Http\Message;
    public function pullHttp(): WebSocket\Http\Message;
    public function setHandshakeRequest(WebSocket\Http\Request $request): self;
    public function getHandshakeRequest(): WebSocket\Http\Request|null;
    public function setHandshakeResponse(WebSocket\Http\Response $response): self;
    public function getHandshakeResponse(): WebSocket\Http\Response|null;
}

WebSocket / Exception

BadOpcodeException

class WebSocket\Exception\BadOpcodeException extends WebSocket\Exception\Exception implements WebSocket\Exception\MessageLevelInterface
{
    public function __construct(string $message = '');
}

BadUriException

class WebSocket\Exception\BadUriException extends WebSocket\Exception\Exception
{
    parent::__construct($message ?: 'Bad URI');
}

ClientException

class WebSocket\Exception\ClientException extends WebSocket\Exception\Exception
{
}

CloseException

class WebSocket\Exception\CloseException extends WebSocket\Exception\Exception
{
    public function __construct(int|null $status = null, string $content = '');
    public function getCloseStatus(): int|null;
}

ConnectionClosedException

class WebSocket\Exception\ConnectionClosedException extends WebSocket\Exception\Exception implements WebSocket\Exception\ConnectionLevelInterface
{
    public function __construct();
}

ConnectionFailureException

class WebSocket\Exception\ConnectionFailureException extends WebSocket\Exception\Exception implements WebSocket\Exception\ConnectionLevelInterface
{
    public function __construct();
}

ConnectionLevelInterface

interface WebSocket\Exception\ConnectionLevelInterface
{
}

ConnectionTimeoutException

class WebSocket\Exception\ConnectionTimeoutException extends WebSocket\Exception\Exception implements WebSocket\Exception\MessageLevelInterface
{
    public function __construct();
}

Exception

abstract class Exception extends RuntimeException
{
}

HandshakeException

class WebSocket\Exception\HandshakeException extends WebSocket\Exception\Exception implements WebSocket\Exception\ConnectionLevelInterface
{
    public function __construct(string $message, WebSocket\Http\Response $response);
    public function getResponse(): WebSocket\Http\Response;
}

MessageLevelInterface

interface WebSocket\Exception\MessageLevelInterface
{
}

ReconnectException

class WebSocket\Exception\ReconnectException extends WebSocket\Exception\Exception implements WebSocket\Exception\ConnectionLevelInterface
{
    public function __construct(string $message, WebSocket\Http\Response $response);
    public function getResponse(): WebSocket\Http\Response;
}

ServerException

class WebSocket\Exception\ServerException extends WebSocket\Exception\Exception
{
}

WebSocket / Frame

FrameHandler

class WebSocket\Frame\FrameHandler implements LoggerAwareInterface, Stringable
{
    public function __construct(Phrity\Net\SocketStream $stream, bool $pushMasked, bool $pullMaskedRequired);
    public function __toString(): string;
    public function setLogger(Psr\Log\LoggerInterface $logger): void;
    public function pull(): WebSocket\Frame\Frame;
    public function push(WebSocket\Frame\Frame $frame, bool|null $masked = null): int;
}

Frame

class WebSocket\Frame\Frame implements Stringable
{
    public function __construct(string $opcode, string $payload, bool $final);
    public function __toString(): string;
    public function isFinal(): bool;
    public function isContinuation(): bool;
    public function getOpcode(): string;
    public function getPayload(): string;
    public function getPayloadLength(): int;
}

WebSocket / Http

HttpHandler

class WebSocket\Http\HttpHandler implements LoggerAwareInterface, Stringable
{
    public function __construct(Phrity\Net\SocketStream $stream, bool $ssl = false);
    public function __toString(): string;
    public function setLogger(Psr\Log\LoggerInterface $logger): void;
    public function pull(): Psr\Http\Message\MessageInterface;
    public function push(Psr\Http\Message\MessageInterface $message): Psr\Http\Message\MessageInterface;
}

Message

abstract class WebSocket\Http\Message implements Psr\Http\Message\MessageInterface, Stringable
{
    public function __toString(): string;
    public function getProtocolVersion(): string;
    public function withProtocolVersion(string $version): self;
    public function getHeaders(): array;
    public function hasHeader(string $name): bool;
    public function getHeader(string $name): array;
    public function getHeaderLine(string $name): string;
    public function withHeader(string $name, mixed $value): self;
    public function withAddedHeader(string $name, mixed $value): self;
    public function withoutHeader(string $name): self;
    public function getAsArray(): array;
}

Request

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 __toString(): string;
    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;
}

Response

class WebSocket\Http\Response extends WebSocket\Http\Message implements Psr\Http\Message\ResponseInterface
{
    public function __construct(int $code = 200, string $reasonPhrase = '');
    public function __toString(): string;
    public function getStatusCode(): int;
    public function withStatus(int $code, string $reasonPhrase = ''): self;
    public function getReasonPhrase(): string;
    public function getAsArray(): array;
}

ServerRequest

class WebSocket\Http\ServerRequest extends WebSocket\Http\Request implements Psr\Http\Message\ServerRequestInterface
{
    public function __toString(): string;
}

WebSocket / Message

Binary

class WebSocket\Message\Binary extends WebSocket\Message\Message
{
}

Close

class WebSocket\Message\Close extends WebSocket\Message\Message
{
    public function __construct(int|null $status = null, string $content = '');
    public function getCloseStatus(): int|null;
    public function setCloseStatus(int|null $status): void;
    public function getPayload(): string;
    public function setPayload(string $payload = ''): void;
}

Message

class WebSocket\Message\Message implements Stringable
{
    public function __construct(string $content = '');
    public function __toString(): string;
    public function getOpcode(): string;
    public function getLength(): int;
    public function getTimestamp(): DateTimeInterface;
    public function getContent(): string;
    public function setContent(string $content = ''): void;
    public function hasContent(): bool;
    public function getPayload(): string;
    public function setPayload(string $payload = ''): void;
    public function getFrames(int $frameSize = 4096): array;
}

MessageHandler

class WebSocket\Message\MessageHandler implements Psr\Log\LoggerAwareInterface, Stringable
{
    public function __construct(WebSocket\Frame\FrameHandler $frameHandler);
    public function __toString(): string;
    public function setLogger(Psr\Log\LoggerInterface $logger): void;
    public function push(WebSocket\Message\Message $message, int $size = self::DEFAULT_SIZE): WebSocket\Message\Message;
    public function pull(): WebSocket\Message\Message;
}

Ping

class WebSocket\Message\Ping extends WebSocket\Message\Message
{
}

Pong

class WebSocket\Message\Pong extends WebSocket\Message\Message
{
}

Text

class WebSocket\Message\Text extends WebSocket\Message\Message
{
}