Server
        
        extends EventEmitter
    
    
            
            in package
            
        
    
            
            implements
                            ServerInterface                    
    
    
Tags
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
- [Deprecated] `Server`
- 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
$listeners
    protected
        mixed
    $listeners
     = []
    
    
    
$onceListeners
    protected
        mixed
    $onceListeners
     = []
    
    
    
$server
    private
        mixed
    $server
    
    
    
    
Methods
__construct()
[Deprecated] `Server`
    public
                    __construct(string|int $uri[, LoopInterface $loop = null ][, array<string|int, mixed> $context = array() ]) : mixed
    This class exists for BC reasons only and should not be used anymore.
// deprecated
$socket = new React\Socket\Server(0);
$socket = new React\Socket\Server('127.0.0.1:8000');
$socket = new React\Socket\Server('127.0.0.1:8000', null, $context);
$socket = new React\Socket\Server('127.0.0.1:8000', $loop, $context);
// new
$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);
$socket = new React\Socket\SocketServer('127.0.0.1:8000', $context, $loop);
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.
For BC reasons, you can also pass the TCP socket context options as a simple
array without wrapping this in another array under the tcp key.
Parameters
- $uri : string|int
- $loop : LoopInterface = null
- $context : array<string|int, mixed> = array()
Tags
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.