/** * 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']); } } }