public function handleRouterStop(RouterStopEvent $event) { if ($this->session) { $this->session->shutdown(); } $this->internalClient->onClose("router stopped"); }
public function handleRouterStart(RouterStartEvent $event) { /** @var Session $session */ $session = null; // create a new transport for the client side to use $clientTransport = new InternalClientTransport(function ($msg) use(&$session) { $session->dispatchMessage(Message::createMessageFromArray(json_decode(json_encode($msg)))); }, $this->loop); // create a new transport for the router side to use $transport = new InternalClientTransport(function ($msg) use($clientTransport) { $this->internalClient->onMessage($clientTransport, Message::createMessageFromArray(json_decode(json_encode($msg)))); }, $this->loop); $transport->setTrusted($this->trusted); $session = $this->router->createNewSession($transport); $this->session = $session; // connect the transport to the Router/Peer $this->router->getEventDispatcher()->dispatch("connection_open", new ConnectionOpenEvent($session)); // open the client side $this->internalClient->onOpen($clientTransport); // internal client shouldn't retry $this->internalClient->setAttemptRetry(false); // tell the internal client to start up $this->internalClient->start(false); }