/** * Called whenever a client disconnects. * * @param ClientEvent $event */ public function onClientDisconnect(ClientEvent $event) { $conn = $event->getConnection(); $loggerContext = array('connection_id' => $conn->resourceId, 'session_id' => $conn->WAMP->sessionId, 'storage_id' => $conn->WAMP->clientStorageId); try { $user = $this->clientStorage->getClient($conn->WAMP->clientStorageId); //go here only if getClient doesn't throw error $this->clientStorage->removeClient($conn->resourceId); $username = $user instanceof UserInterface ? $user->getUsername() : $user; $loggerContext['username'] = $username; $this->logger->info(sprintf('%s disconnected', $username), $loggerContext); } catch (ClientNotFoundException $e) { $this->logger->info('user timed out', $loggerContext); } }
/** * Called whenever a client disconnects. * * @param ClientEvent $event */ public function onClientDisconnect(ClientEvent $event) { $conn = $event->getConnection(); try { $user = $this->clientStorage->getClient($conn->WAMP->clientStorageId); $username = $user instanceof UserInterface ? $user->getUsername() : $user; $this->logger->info(sprintf('%s disconnected [%]', $username, $user instanceof UserInterface ? implode(', ', $user->getRoles()) : array()), array('connection_id' => $conn->resourceId, 'session_id' => $conn->WAMP->sessionId, 'storage_id' => $conn->WAMP->clientStorageId)); } catch (StorageException $e) { $this->logger->info(sprintf('%s disconnected [%s]', 'Expired user', ''), array('connection_id' => $conn->resourceId, 'session_id' => $conn->WAMP->sessionId, 'storage_id' => $conn->WAMP->clientStorageId)); } $this->clientStorage->removeClient($conn->resourceId); }