Skip to content

Releases: reactphp/socket

v0.8.0

09 May 11:29
Compare
Choose a tag to compare
  • Feature: New Server class now acts as a facade for existing server classes
    and renamed old Server to TcpServer for advanced usage.
    (#96 and #97 by @clue)

    The Server class is now 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.

    This is not a BC break and consumer code does not have to be updated.

  • Feature / BC break: All addresses are now URIs that include the URI scheme
    (#98 by @clue)

    - $parts = parse_url('tcp://' . $conn->getRemoteAddress());
    + $parts = parse_url($conn->getRemoteAddress());
  • Fix: Fix unix:// addresses for Unix domain socket (UDS) paths
    (#100 by @clue)

  • Feature: Forward compatibility with Stream v1.0 and v0.7
    (#99 by @clue)

v0.7.2

24 Apr 09:37
Compare
Choose a tag to compare
  • Fix: Work around latest PHP 7.0.18 and 7.1.4 no longer accepting full URIs
    (#94 by @clue)

v0.7.1

10 Apr 20:53
Compare
Choose a tag to compare
  • Fix: Ignore HHVM errors when closing connection that is already closing
    (#91 by @clue)

v0.7.0

10 Apr 12:10
Compare
Choose a tag to compare
  • Feature: Merge SocketClient component into this component
    (#87 by @clue)

    This means that this package now provides async, streaming plaintext TCP/IP
    and secure TLS socket server and client connections for ReactPHP.

    $connector = new React\Socket\Connector($loop);
    $connector->connect('google.com:80')->then(function (ConnectionInterface $conn) {
        $connection->write('');
    });

    Accordingly, the ConnectionInterface is now used to represent both incoming
    server side connections as well as outgoing client side connections.

    If you've previously used the SocketClient component to establish outgoing
    client connections, upgrading should take no longer than a few minutes.
    All classes have been merged as-is from the latest v0.7.0 release with no
    other changes, so you can simply update your code to use the updated namespace
    like this:

    // old from SocketClient component and namespace
    $connector = new React\SocketClient\Connector($loop);
    $connector->connect('google.com:80')->then(function (ConnectionInterface $conn) {
        $connection->write('');
    });
    
    // new
    $connector = new React\Socket\Connector($loop);
    $connector->connect('google.com:80')->then(function (ConnectionInterface $conn) {
        $connection->write('');
    });

v0.6.0

04 Apr 15:41
Compare
Choose a tag to compare
  • Feature: Add LimitingServer to limit and keep track of open connections
    (#86 by @clue)

    $server = new Server(0, $loop);
    $server = new LimitingServer($server, 100);
    
    $server->on('connection', function (ConnectionInterface $connection) {
        $connection->write('hello there!' . PHP_EOL);
        …
    });
  • Feature / BC break: Add pause() and resume() methods to limit active
    connections
    (#84 by @clue)

    $server = new Server(0, $loop);
    $server->pause();
    
    $loop->addTimer(1.0, function() use ($server) {
        $server->resume();
    });

v0.5.1

09 Mar 12:13
Compare
Choose a tag to compare
  • Feature: Forward compatibility with Stream v0.5 and upcoming v0.6
    (#79 by @clue)

v0.5.0

14 Feb 06:50
Compare
Choose a tag to compare
  • Feature / BC break: Replace listen() call with URIs passed to constructor
    and reject listening on hostnames with InvalidArgumentException
    and replace ConnectionException with RuntimeException for consistency
    (#61, #66 and #72 by @clue)

    // old
    $server = new Server($loop);
    $server->listen(8080);
    
    // new
    $server = new Server(8080, $loop);

    Similarly, you can now pass a full listening URI to the constructor to change
    the listening host:

    // old
    $server = new Server($loop);
    $server->listen(8080, '127.0.0.1');
    
    // new
    $server = new Server('127.0.0.1:8080', $loop);

    Trying to start listening on (DNS) host names will now throw an
    InvalidArgumentException, use IP addresses instead:

    // old
    $server = new Server($loop);
    $server->listen(8080, 'localhost');
    
    // new
    $server = new Server('127.0.0.1:8080', $loop);

    If trying to listen fails (such as if port is already in use or port below
    1024 may require root access etc.), it will now throw a RuntimeException,
    the ConnectionException class has been removed:

    // old: throws React\Socket\ConnectionException
    $server = new Server($loop);
    $server->listen(80);
    
    // new: throws RuntimeException
    $server = new Server(80, $loop);
  • Feature / BC break: Rename shutdown() to close() for consistency throughout React
    (#62 by @clue)

    // old
    $server->shutdown();
    
    // new
    $server->close();
  • Feature / BC break: Replace getPort() with getAddress()
    (#67 by @clue)

    // old
    echo $server->getPort(); // 8080
    
    // new
    echo $server->getAddress(); // 127.0.0.1:8080
  • Feature / BC break: getRemoteAddress() returns full address instead of only IP
    (#65 by @clue)

    // old
    echo $connection->getRemoteAddress(); // 192.168.0.1
    
    // new
    echo $connection->getRemoteAddress(); // 192.168.0.1:51743
  • Feature / BC break: Add getLocalAddress() method
    (#68 by @clue)

    echo $connection->getLocalAddress(); // 127.0.0.1:8080
  • BC break: The Server and SecureServer class are now marked final
    and you can no longer extend them
    (which was never documented or recommended anyway).
    Public properties and event handlers are now internal only.
    Please use composition instead of extension.
    (#71, #70 and #69 by @clue)

v0.4.6

26 Jan 09:24
Compare
Choose a tag to compare
  • Feature: Support socket context options passed to Server
    (#64 by @clue)
  • Fix: Properly return null for unknown addresses
    (#63 by @clue)
  • Improve documentation for ServerInterface and lock test suite requirements
    (#60 by @clue, #57 by @shaunbramley)

v0.4.5

08 Jan 11:37
Compare
Choose a tag to compare
  • Feature: Add SecureServer for secure TLS connections
    (#55 by @clue)
  • Add functional integration tests
    (#54 by @clue)

v0.4.4

19 Dec 22:53
Compare
Choose a tag to compare
  • Feature / Fix: ConnectionInterface should extend DuplexStreamInterface + documentation
    (#50 by @clue)
  • Feature / Fix: Improve test suite and switch to normal stream handler
    (#51 by @clue)
  • Feature: Add examples
    (#49 by @clue)