/**
  * Callback when a client suffers an error
  *
  * @param \WebSocketServer\Event\Event   $event   The event
  * @param \WebSocketServer\Socket\Client $client  The client
  * @param string                         $message The error description
  */
 public function onError(Event $event, Client $client, $message)
 {
     if ($user = $client->getAppData('user')) {
         $userId = $user->getId();
     } else {
         $userId = '#' . $client->getId();
     }
     $client->getServer()->sendToAllButClient($userId . ' fell over', $client);
 }
 /**
  * Remove a client (stream) of the user
  *
  * @param \WebSocketServer\Socket\Client $client The new client to remove of the user
  */
 public function removeClient(Client $client)
 {
     unset($this->clients[$client->getId()]);
 }
 /**
  * Disconnect client
  *
  * @param \WebSocketServer\Socket\Client $client The client to disconnect
  *
  * @throws \OutOfRangeException When passed client does not belong to this server
  */
 public function removeClient(Client $client)
 {
     if ($client->getServer() !== $this) {
         throw new \OutOfRangeException('Client does not belong to this server');
     }
     if ($client->isConnected()) {
         $client->disconnect();
     }
     $id = $client->getId();
     if (isset($this->clients[$id])) {
         unset($this->clients[$id], $this->sockets[$id]);
         $this->trigger('clientremove', $this, $client);
     }
 }