Documentation

SocketServer extends EventEmitter
in package
implements ServerInterface

FinalYes

Table of Contents

Interfaces

ServerInterface
The `ServerInterface` is responsible for providing an interface for accepting incoming streaming connections, such as a normal TCP/IP connection.

Properties

$listeners  : mixed
$onceListeners  : mixed
$server  : mixed

Methods

__construct()  : mixed
The `SocketServer` class is the main class in this package that implements the `ServerInterface` and allows you to accept incoming streaming connections, such as plaintext TCP/IP or secure TLS connection streams.
close()  : void
Shuts down this listening socket
emit()  : mixed
getAddress()  : string|null
Returns the full address (URI) this server is currently listening on
listeners()  : array<string|int, mixed>
on()  : mixed
once()  : mixed
pause()  : void
Pauses accepting new incoming connections.
removeAllListeners()  : mixed
removeListener()  : mixed
resume()  : void
Resumes accepting new incoming connections.

Properties

Methods

__construct()

The `SocketServer` class is the main class in this package that implements the `ServerInterface` and allows you to accept incoming streaming connections, such as plaintext TCP/IP or secure TLS connection streams.

public __construct(string $uri[, array<string|int, mixed> $context = array() ][, LoopInterface|null $loop = null ]) : mixed
$socket = new React\Socket\SocketServer('127.0.0.1:0');
$socket = new React\Socket\SocketServer('127.0.0.1:8000');
$socket = new React\Socket\SocketServer('127.0.0.1:8000', $context);

This class takes an optional LoopInterface|null $loop parameter that can be used to pass the event loop instance to use for this object. You can use a null value here in order to use the default loop. This value SHOULD NOT be given unless you're sure you want to explicitly use a given event loop instance.

Parameters
$uri : string
$context : array<string|int, mixed> = array()
$loop : LoopInterface|null = null
Tags
throws
InvalidArgumentException

if the listening address is invalid

throws
RuntimeException

if listening on this address fails (already in use etc.)

close()

Shuts down this listening socket

public close() : void

This will stop listening for new incoming connections on this socket.

Calling this method more than once on the same instance is a NO-OP.

emit()

public emit(mixed $event[, array<string|int, mixed> $arguments = [] ]) : mixed
Parameters
$event : mixed
$arguments : array<string|int, mixed> = []

getAddress()

Returns the full address (URI) this server is currently listening on

public getAddress() : string|null
$address = $socket->getAddress();
echo 'Server listening on ' . $address . PHP_EOL;

If the address can not be determined or is unknown at this time (such as after the socket has been closed), it MAY return a NULL value instead.

Otherwise, it will return the full address (URI) as a string value, such as tcp://127.0.0.1:8080, tcp://[::1]:80 or tls://127.0.0.1:443. Note that individual URI components are application specific and depend on the underlying transport protocol.

If this is a TCP/IP based server and you only want the local port, you may use something like this:

$address = $socket->getAddress();
$port = parse_url($address, PHP_URL_PORT);
echo 'Server listening on port ' . $port . PHP_EOL;
Return values
string|null

the full listening address (URI) or NULL if it is unknown (not applicable to this server socket or already closed)

listeners()

public listeners([mixed $event = null ]) : array<string|int, mixed>
Parameters
$event : mixed = null
Return values
array<string|int, mixed>

on()

public on(mixed $event, callable $listener) : mixed
Parameters
$event : mixed
$listener : callable

once()

public once(mixed $event, callable $listener) : mixed
Parameters
$event : mixed
$listener : callable

pause()

Pauses accepting new incoming connections.

public pause() : void

Removes the socket resource from the EventLoop and thus stop accepting new connections. Note that the listening socket stays active and is not closed.

This means that new incoming connections will stay pending in the operating system backlog until its configurable backlog is filled. Once the backlog is filled, the operating system may reject further incoming connections until the backlog is drained again by resuming to accept new connections.

Once the server is paused, no futher connection events SHOULD be emitted.

$socket->pause();

$socket->on('connection', assertShouldNeverCalled());

This method is advisory-only, though generally not recommended, the server MAY continue emitting connection events.

Unless otherwise noted, a successfully opened server SHOULD NOT start in paused state.

You can continue processing events by calling resume() again.

Note that both methods can be called any number of times, in particular calling pause() more than once SHOULD NOT have any effect. Similarly, calling this after close() is a NO-OP.

removeAllListeners()

public removeAllListeners([mixed $event = null ]) : mixed
Parameters
$event : mixed = null

removeListener()

public removeListener(mixed $event, callable $listener) : mixed
Parameters
$event : mixed
$listener : callable

resume()

Resumes accepting new incoming connections.

public resume() : void

Re-attach the socket resource to the EventLoop after a previous pause().

$socket->pause();

Loop::addTimer(1.0, function () use ($socket) {
    $socket->resume();
});

Note that both methods can be called any number of times, in particular calling resume() without a prior pause() SHOULD NOT have any effect. Similarly, calling this after close() is a NO-OP.


        
On this page

Search results