diff --git a/src/MqttClient.php b/src/MqttClient.php index 58e1683..d834b99 100644 --- a/src/MqttClient.php +++ b/src/MqttClient.php @@ -23,7 +23,6 @@ use oliverlorenz\reactphpmqtt\protocol\Version; use oliverlorenz\reactphpmqtt\protocol\Violation as ProtocolViolation; use React\EventLoop\LoopInterface as Loop; -use React\EventLoop\Timer\Timer; use React\Promise\Deferred; use React\Promise\FulfilledPromise; use React\Promise\PromiseInterface; @@ -107,10 +106,14 @@ private function keepAlive(Connection $stream, $keepAlive) if($keepAlive > 0) { $interval = $keepAlive / 2; - $this->getLoop()->addPeriodicTimer($interval, function(Timer $timer) use ($stream) { + $timer = $this->getLoop()->addPeriodicTimer($interval, function() use ($stream) { $packet = new PingRequest($this->version); $this->sendPacketToStream($stream, $packet); }); + + $stream->on('close', function() use ($timer) { + $this->getLoop()->cancelTimer($timer); + }); } return new FulfilledPromise($stream);