public function __construct(TransportInterface $carrierProtocol, LoopInterface $loop, LoggerInterface $logger) { $that = $this; $this->logger = $logger; $this->loop = $loop; $this->carrierProtocol = $carrierProtocol; $this->actionEmitter = new EventEmitter(); $deferreds =& $this->deferred; $timers =& $this->timers; $carrierProtocol->on("message", function (MessageInterface $message) use(&$deferreds, &$timers, &$loop, $that, $logger) { $string = $message->getData(); try { $jsonMessage = RemoteEventMessage::fromJson($string); $tag = $jsonMessage->getTag(); if (array_key_exists($tag, $deferreds)) { $deferred = $deferreds[$tag]; unset($deferreds[$tag]); if (array_key_exists($tag, $timers)) { $loop->cancelTimer($timers[$tag]); unset($timers[$tag]); } $deferred->resolve($jsonMessage); } else { $that->remoteEvent()->emit($jsonMessage->getEvent(), array($jsonMessage)); } $that->emit("message", array($jsonMessage)); } catch (\Exception $e) { $logger->err("Exception while parsing JsonMessage: " . $e->getMessage()); } }); }