SocketClient Changelog
2017
0.7.0 (2017-04-02) Release on GitHub
-
Feature / BC break: Add main
Connectorfacade
(#93 by @clue)The new
Connectorclass acts as a facade for all underlying connectors,
which are now marked as "advanced usage", but continue to work unchanged.
This now makes it trivially easy to create plaintext TCP/IP, secure TLS and
Unix domain socket (UDS) connection streams simply like this:$connector = new Connector($loop); $connector->connect('tls://google.com:443')->then(function (ConnectionInterface $conn) { $conn->write("GET / HTTP/1.0\r\n\r\n"); });
Optionally, it accepts options to configure all underlying connectors, such
as using a custom DNS setup, timeout values and disabling certain protocols
and much more. See the README for more details.
0.6.2 (2017-03-17) Release on GitHub
- Feature / Fix: Support SNI on legacy PHP < 5.6 and add documentation for
supported PHP and HHVM versions.
(#90 and #91 by @clue)
0.6.1 (2017-03-10) Release on GitHub
-
Feature: Forward compatibility with Stream v0.5 and upcoming v0.6
(#89 by @clue) -
Fix: Fix examples to use updated API
(#88 by @clue)
0.6.0 (2017-02-17) Release on GitHub
-
Feature / BC break: Use
connect($uri)instead ofcreate($host, $port)
and resolve with aConnectionInterfaceinstead ofStream
and expose remote and local addresses through this interface
and remove superfluous and undocumentedConnectionException.
(#74, #82 and #84 by @clue)// old $connector->create('google.com', 80)->then(function (Stream $conn) { echo 'Connected' . PHP_EOL; $conn->write("GET / HTTP/1.0\r\n\r\n"); }); // new $connector->connect('google.com:80')->then(function (ConnectionInterface $conn) { echo 'Connected to ' . $conn->getRemoteAddress() . PHP_EOL; $conn->write("GET / HTTP/1.0\r\n\r\n"); });
Note that both the old
Streamand the newConnectionInterfaceimplement
the same underlyingDuplexStreamInterface, so their streaming behavior is
actually equivalent.
In order to upgrade, simply use the new typehints.
Existing stream handlers should continue to work unchanged. -
Feature / BC break: All connectors now MUST offer cancellation support.
You can now rely on getting a rejected promise when callingcancel()on a
pending connection attempt.
(#79 by @clue)// old: promise resolution not enforced and thus unreliable $promise = $connector->create($host, $port); $promise->cancel(); $promise->then(/* MAY still be called */, /* SHOULD be called */); // new: rejecting after cancellation is mandatory $promise = $connector->connect($uri); $promise->cancel(); $promise->then(/* MUST NOT be called */, /* MUST be called */);
Note that this behavior is only mandatory for pending connection attempts.
Once the promise is settled (resolved), callingcancel()will have no effect. -
BC break: All connector classes are now marked
final
and you can no longerextendthem
(which was never documented or recommended anyway).
Please use composition instead of extension.
(#85 by @clue)
2016
0.5.3 (2016-12-24) Release on GitHub
- Fix: Skip IPv6 tests if not supported by the system
(#76 by @clue) - Documentation for
ConnectorInterface
(#77 by @clue)
0.5.2 (2016-12-19) Release on GitHub
- Feature: Replace
SecureStreamwith unlimited read buffer from react/stream v0.4.5
(#72 by @clue) - Feature: Add examples
(#75 by @clue)
0.4.6 (2016-12-06) Release on GitHub
This is a bugfix release that resolves an issue introduced in the v0.4.5 release.
You should consider upgrading to the v0.5 release.
- Fix: Always create empty stream context to prevent race condition leading to
CN mismatch on TLS enabled connections (#73 by @WyriHaximus)
0.5.1 (2016-11-20) Release on GitHub
-
Feature: Support Promise cancellation for all connectors
(#71 by @clue)$promise = $connector->create($host, $port); $promise->cancel();
-
Feature: Add TimeoutConnector decorator
(#51 by @clue)$timeout = new TimeoutConnector($connector, 3.0, $loop); $timeout->create($host, $port)->then(function(Stream $stream) { // connection resolved within 3.0s });
0.4.5 (2016-03-27) Release on GitHub
This is a compatibility release that backports some changes from the v0.5
release branch. You should consider upgrading to the v0.5 release.
- Fix: PHP 5.6+ uses new SSL/TLS context options backported (#65 by @clue)
- Fix: Move SSL/TLS context options to SecureConnector (#43 by @clue)
0.5.0 (2016-03-19) Release on GitHub
-
Feature / BC break: Support Connector without DNS
(#46 by @clue)BC break: The
Connectorclass now serves as a BC layer only.
TheTcpConnectorandDnsConnectorclasses replace its functionality.
If you're merely using this class, then you're recommended to upgrade as
per the below snippet – existing code will still work unchanged.
If you'reextending theConnector(generally not recommended), then you
may have to rework your class hierarchy.// old (still supported, but marked deprecated) $connector = new Connector($loop, $resolver); // new equivalent $connector = new DnsConnector(new TcpConnector($loop), $resolver); // new feature: supports connecting to IP addresses only $connector = new TcpConnector($loop);
-
Feature: Add socket and SSL/TLS context options to connectors
(#52 by @clue) -
Fix: PHP 5.6+ uses new SSL/TLS context options
(#61 by @clue) -
Fix: Move SSL/TLS context options to SecureConnector
(#43 by @clue) -
Fix: Fix error reporting for invalid addresses
(#47 by @clue) -
Fix: Close stream resource if connection fails
(#48 by @clue) -
First class support for PHP 5.3 through PHP 7 and HHVM
(#53, #54 by @clue) -
Add integration tests for SSL/TLS sockets
(#62 by @clue)
2015
0.4.4 (2015-09-23) Release on GitHub
- Feature: Add support for Unix domain sockets (UDS) (#41 by @clue)
- Bugfix: Explicitly set supported TLS versions for PHP 5.6+ (#31 by @WyriHaximus)
- Bugfix: Ignore SSL non-draining buffer workaround for PHP 5.6.8+ (#33 by @alexmace)
0.4.3 (2015-03-20) Release on GitHub
- Bugfix: Set peer name to hostname to correct security concern in PHP 5.6 (@WyriHaximus)
- Bugfix: Always wrap secure to pull buffer due to regression in PHP
- Bugfix: SecureStream extends Stream to match documentation preventing BC (@clue)
2014
0.4.2 (2014-10-16) Release on GitHub
Phergilicious: In honour of all the SSL bugs found by the Phergie project re-writing on top of React.
- Bugfix: Only toggle the stream crypto handshake once (@DaveRandom and @rdlowrey)
- Bugfix: Workaround for ext-openssl buffering bug (@DaveRandom)
- Bugfix: SNI fix for PHP < 5.6 (@DaveRandom)
0.4.0 (2014-02-02) Release on GitHub
- BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks
- BC break: Update to React/Promise 2.0
- Dependency: Autoloading and filesystem structure now PSR-4 instead of PSR-0
- Bump React dependencies to v0.4
2013
0.3.1 (2013-04-20) Release on GitHub
- Feature: [SocketClient] Support connecting to IPv6 addresses (@clue)
0.3.0 (2013-04-14) Release on GitHub
- Feature: [SocketClient] New SocketClient component extracted from HttpClient (@clue)