diff --git a/composer.json b/composer.json index 44e4833..1ebd83a 100644 --- a/composer.json +++ b/composer.json @@ -22,9 +22,9 @@ }, "require": { "php": ">=5.3", - "clue/multicast-react": "^1.0 || ^0.2", + "clue/multicast-react": "1.x-dev#f1bd5df0309b9f8b3486b09bf37aedfb042addb6", "react/event-loop": "^1.2", - "react/promise": "^2.0 || ^1.0" + "react/promise": "^3.2 || ^2.7 || ^1.2.1" }, "require-dev": { "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" diff --git a/src/Client.php b/src/Client.php index 6a9e46a..2524a99 100644 --- a/src/Client.php +++ b/src/Client.php @@ -46,10 +46,7 @@ public function search($searchTarget = 'ssdp:all', $mx = 2) $socket = $this->multicast->createSender(); // TODO: The TTL for the IP packet SHOULD default to 2 and SHOULD be configurable. - $timer = $this->loop->addTimer($mx, function() use ($socket, &$deferred) { - $deferred->resolve(); - $socket->close(); - }); + $messages = array(); $loop = $this->loop; $deferred = new Deferred(function () use ($socket, &$timer, $loop) { @@ -59,9 +56,15 @@ public function search($searchTarget = 'ssdp:all', $mx = 2) throw new RuntimeException('Cancelled'); }); + $timer = $this->loop->addTimer($mx, function() use ($socket, &$deferred, &$messages) { + $deferred->resolve($messages); + $socket->close(); + }); + $that = $this; - $socket->on('message', function ($data, $remote) use ($deferred, $that) { + $socket->on('message', function ($data, $remote) use (&$messages, $that) { $message = $that->parseMessage($data, $remote); + $messages[] = $message; $deferred->progress($message); });