Wraps a WebSocket peer.
Public Properties | |
const | STATE_CLOSED = 2 |
The peer has disconnected. More... | |
const | STATE_HANDSHAKE = 0 |
The peer has connected but hasn't negotiated a session yet. More... | |
const | STATE_OK = 1 |
The session is active and the client can perform frame I/O with the peer. More... | |
Public Properties inherited from SocketInterface | |
const | CH_EXCEPT = 2 |
Out-of-band channel. More... | |
const | CH_READ = 0 |
Read channel. More... | |
const | CH_WRITE = 1 |
Write channel. More... | |
Protected Properties | |
FrameHandler | $frameHandler |
Handshake | $handshake |
WebSocketServer | $server |
int | $state = self::STATE_HANDSHAKE |
Protected Properties inherited from AbstractSocket | |
resource | $resource |
The underlying PHP resource. More... | |
Public Methods | |
__construct ($resource, WebSocketServer $server) | |
$this | close (int $code=null, string $reason='') |
Closes, optionally with a code and reason sent to the peer. More... | |
FrameHandler | getFrameHandler () |
WebSocketServer | getServer () |
int | getState () |
bool | isNegotiating () |
bool | isOk () |
void | onBinary (string $binary) |
Called when a complete BINARY payload is received from the peer. More... | |
void | onClose (int $code, string $reason) |
Called when a CLOSE frame is received from the peer. More... | |
void | onOutOfBand () |
WebSockets do not use the out-of-band channel. More... | |
void | onPing (string $message) |
Called when a PING is received from the peer. More... | |
void | onPong (string $message) |
Called when a PONG is received from the peer. More... | |
void | onReadable () |
Delegates the read-channel to handlers. More... | |
void | onText (string $text) |
Called when a complete TEXT payload is received from the peer. More... | |
void | writeBinary (string $binary) |
Forwards to the FrameHandler. More... | |
void | writeJSON ($data) |
JSON-encodes and sends as TEXT . More... | |
void | writeText (string $text) |
Forwards to the FrameHandler. More... | |
Public Methods inherited from StreamClient | |
string | read (int $length) |
Reads the specified length from the peer (forced blocking). More... | |
string | recv (int $maxLength, int $flags=0) |
Receives up to a specified length from the peer. More... | |
string | recvAll (int $flags=0) |
All available data in the system buffer without blocking. More... | |
Public Methods inherited from AbstractClient | |
string | __toString () |
The peer's name as <address>:<port> , or <pid>:0 for Unix sockets, or ?<id> if a name can't be derived (e.g. More... | |
$this | connect (string $address, int $port=0) |
Connects the socket to a peer. More... | |
array | getPeerName () |
The peer's address and port, or Unix PID and port 0 . More... | |
int | send (string $data, int $flags=0) |
Sends data to the remote peer. More... | |
$this | write (string $data) |
Sends all data (forced blocking). More... | |
Public Methods inherited from AbstractSocket | |
__construct ($resource) | |
Validates and sets the underlying socket resource. More... | |
__destruct () | |
Closes the socket if it's open. More... | |
$this | await (int $channel) |
Blocks until the socket becomes available on a given channel. More... | |
$this | awaitOutOfBand () |
$this | awaitReadable () |
$this | awaitWritable () |
$this | close () |
Closes the underlying resource if it's open. More... | |
int | getDomain () |
The AF_* address family constant. More... | |
int | getId () |
mixed | getOption (int $option) |
Retrieves an option value. More... | |
resource | getResource () |
array | getSockName () |
The local address and port, or Unix file path and port 0 . More... | |
bool | isOpen () |
bool | isOutOfBand () |
Polls for whether the socket can perform a non-blocking out-of-band read. More... | |
bool | isReadable () |
Polls for whether the socket can perform a non-blocking read. More... | |
bool | isReady (int $channel, ?float $timeout=0) |
Selects for channel availability. More... | |
bool | isWritable () |
Polls for whether the socket can perform a non-blocking write. More... | |
$this | setBlocking (bool $blocking) |
Enables or disables blocking. More... | |
$this | setOption (int $option, $value) |
Sets an option on the underlying resource. More... | |
$this | setTimeout (float $timeout) |
Sets the I/O timeout length in seconds. More... | |
$this | shutdown (int $channel) |
Shuts down I/O for a single channel. More... | |
Protected Methods | |
void | onStateOk () |
Called when the initial connection handshake succeeds and frame I/O can occur. More... | |
Additional Inherited Members | |
Public Static Methods inherited from StreamClient | |
static int | getType () |
SOCK_STREAM More... | |
static self[] | newUnixPair (... $extra) |
Creates a pair of interconnected Unix instances that can be used for IPC. More... | |
Public Static Methods inherited from AbstractSocket | |
static self | create (int $domain=AF_INET,... $extra) |
Creates an instance of the called class. More... | |
const STATE_CLOSED = 2 |
The peer has disconnected.
const STATE_HANDSHAKE = 0 |
The peer has connected but hasn't negotiated a session yet.
const STATE_OK = 1 |
The session is active and the client can perform frame I/O with the peer.
__construct | ( | $resource, | |
WebSocketServer | $server | ||
) |
resource | $resource | |
WebSocketServer | $server |
$this close | ( | int | $code = null , |
string | $reason = '' |
||
) |
Closes, optionally with a code and reason sent to the peer.
https://tools.ietf.org/html/rfc6455#section-5.5.1
The application MUST NOT send any more data frames after sending a Close frame.
After both sending and receiving a Close message, an endpoint considers the WebSocket connection closed and MUST close the underlying TCP connection.
https://tools.ietf.org/html/rfc6455#section-7.4.2
Status codes in the range 0-999 are not used.
int | null | $code | Sent to the peer if >= 1000 |
string | $reason | Sent to the peer, if code is >= 1000 |
FrameHandler getFrameHandler | ( | ) |
WebSocketServer getServer | ( | ) |
int getState | ( | ) |
|
final |
void onBinary | ( | string | $binary | ) |
Called when a complete BINARY
payload is received from the peer.
Throws by default.
string | $binary |
WebSocketError |
void onClose | ( | int | $code, |
string | $reason | ||
) |
Called when a CLOSE
frame is received from the peer.
int | $code | |
string | $reason |
|
final |
WebSockets do not use the out-of-band channel.
The RFC says the connection must be dropped if any unsupported activity occurs.
Closes the connection with a protocol-error frame.
Implements ReactiveInterface.
void onPing | ( | string | $message | ) |
Called when a PING
is received from the peer.
Automatically PONGs back the payload back by default.
string | $message |
void onPong | ( | string | $message | ) |
Called when a PONG
is received from the peer.
Does nothing by default.
string | $message |
void onReadable | ( | ) |
Delegates the read-channel to handlers.
WebSocketError | |
Throwable |
Implements ReactiveInterface.
|
protected |
Called when the initial connection handshake succeeds and frame I/O can occur.
Does nothing by default.
If you have negotiated an extension during Handshake, claim the RSV bits here via FrameReader::setRsv()
void onText | ( | string | $text | ) |
Called when a complete TEXT
payload is received from the peer.
Throws by default.
string | $text |
WebSocketError |
void writeBinary | ( | string | $binary | ) |
Forwards to the FrameHandler.
string | $binary |
void writeJSON | ( | $data | ) |
JSON-encodes and sends as TEXT
.
mixed | $data |
JsonException |
void writeText | ( | string | $text | ) |
Forwards to the FrameHandler.
string | $text |