Ejemplo n.º 1
0
 /**
  * Triggered when a client sends data through the socket
  * @param  \Ratchet\ConnectionInterface $client The socket/connection that sent the message to your application
  * @param  string $msg The message received
  * @throws \Exception
  */
 function onMessage(ConnectionInterface $client, $msg)
 {
     $msg = json_decode($msg, true);
     if (isset($msg['command'])) {
         switch ($msg['command']) {
             case 'setUser':
                 $this->setUserClient(isset($msg['token']) ? $msg['token'] : null, $client);
             default:
         }
     } else {
         if (isset($msg['from']) && isset($msg['to']) && isset($msg['text'])) {
             if (!isset($this->resourceUsers[$client->resourceId])) {
                 $client->close();
                 return;
             }
             $from = $this->resourceUsers[$client->resourceId]->id;
             $message = new Message();
             $message->setAttribute('sender_id', $from);
             $message->setAttribute('recipient_id', $msg['to']);
             $message->setAttribute('text', $msg['text']);
             $message->save();
             $recipient = isset($this->userClients[$msg['to']]) ? $this->userClients[$msg['to']] : null;
             if ($recipient instanceof ConnectionInterface) {
                 $recipient->send($message->toJson());
             }
             $client->send($message->toJson());
             echo sprintf('Connection %d sending message "%s" to %d' . "\n", $from, $msg['text'], $msg['to']);
         }
     }
 }