diff --git a/composer.json b/composer.json index 401dec6..3168fc3 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ , "require": { "php": ">=5.4.2" , "ratchet/rfc6455": "^0.2" - , "react/socket": "^0.3 || ^0.4" + , "react/socket": "^0.5" , "guzzlehttp/psr7": "^1.0" , "symfony/http-foundation": "^2.2|^3.0" , "symfony/routing": "^2.2|^3.0" diff --git a/src/Ratchet/App.php b/src/Ratchet/App.php index 1216242..6c084d9 100644 --- a/src/Ratchet/App.php +++ b/src/Ratchet/App.php @@ -76,8 +76,7 @@ class App { $this->httpHost = $httpHost; $this->port = $port; - $socket = new Reactor($loop); - $socket->listen($port, $address); + $socket = new Reactor($address . ':' . $port, $loop); $this->routes = new RouteCollection; $this->_server = new IoServer(new HttpServer(new Router(new UrlMatcher($this->routes, new RequestContext))), $socket, $loop); @@ -85,13 +84,14 @@ class App { $policy = new FlashPolicy; $policy->addAllowedAccess($httpHost, 80); $policy->addAllowedAccess($httpHost, $port); - $flashSock = new Reactor($loop); - $this->flashServer = new IoServer($policy, $flashSock); + if (80 == $port) { - $flashSock->listen(843, '0.0.0.0'); + $flashUri = '0.0.0.0:843'; } else { - $flashSock->listen(8843); + $flashUri = 8843; } + $flashSock = new Reactor($flashUri, $loop); + $this->flashServer = new IoServer($policy, $flashSock); } /** diff --git a/src/Ratchet/Server/IoServer.php b/src/Ratchet/Server/IoServer.php index 921c7b1..9cf0798 100644 --- a/src/Ratchet/Server/IoServer.php +++ b/src/Ratchet/Server/IoServer.php @@ -66,8 +66,7 @@ class IoServer { */ public static function factory(MessageComponentInterface $component, $port = 80, $address = '0.0.0.0') { $loop = LoopFactory::create(); - $socket = new Reactor($loop); - $socket->listen($port, $address); + $socket = new Reactor($address . ':' . $port, $loop); return new static($component, $socket, $loop); } @@ -94,7 +93,10 @@ class IoServer { $conn->decor = new IoConnection($conn); $conn->decor->resourceId = (int)$conn->stream; - $conn->decor->remoteAddress = $conn->getRemoteAddress(); + $conn->decor->remoteAddress = trim( + parse_url('tcp://' . $conn->getRemoteAddress(), PHP_URL_HOST), + '[]' + ); $this->app->onOpen($conn->decor); diff --git a/tests/autobahn/bin/fuzzingserver.php b/tests/autobahn/bin/fuzzingserver.php index 7ab81a9..66d3704 100644 --- a/tests/autobahn/bin/fuzzingserver.php +++ b/tests/autobahn/bin/fuzzingserver.php @@ -22,7 +22,7 @@ class BinaryEcho implements \Ratchet\WebSocket\MessageComponentInterface { $impl = sprintf('React\EventLoop\%sLoop', $argc > 2 ? $argv[2] : 'StreamSelect'); $loop = new $impl; - $sock = new React\Socket\Server($loop); + $sock = new React\Socket\Server('0.0.0.0:' . $port, $loop); $wsServer = new Ratchet\WebSocket\WsServer(new BinaryEcho); // This is enabled to test https://github.com/ratchetphp/Ratchet/issues/430 @@ -32,7 +32,5 @@ class BinaryEcho implements \Ratchet\WebSocket\MessageComponentInterface { $app = new Ratchet\Http\HttpServer($wsServer); - $sock->listen($port, '0.0.0.0'); - $server = new Ratchet\Server\IoServer($app, $sock, $loop); $server->run(); diff --git a/tests/unit/Server/IoServerTest.php b/tests/unit/Server/IoServerTest.php index 808098a..ec54b5d 100644 --- a/tests/unit/Server/IoServerTest.php +++ b/tests/unit/Server/IoServerTest.php @@ -20,10 +20,9 @@ class IoServerTest extends \PHPUnit_Framework_TestCase { $this->app = $this->getMock('\\Ratchet\\MessageComponentInterface'); $loop = new StreamSelectLoop; - $this->reactor = new Server($loop); - $this->reactor->listen(0); + $this->reactor = new Server(0, $loop); - $this->port = $this->reactor->getPort(); + $this->port = parse_url('tcp://' . $this->reactor->getAddress(), PHP_URL_PORT); $this->server = new IoServer($this->app, $this->reactor, $loop); }