connections[$conn->resourceId] = compact('conn') + ['user_id' => null]; } /** * This is called before or after a socket is closed (depends on how it's closed). SendMessage to $conn will not result in an error if it has already been closed. * @param ConnectionInterface $conn The socket/connection that is closing/closed * @throws \Exception */ function onClose(ConnectionInterface $conn) { $disconnectedId = $conn->resourceId; unset($this->connections[$disconnectedId]); } /** * If there is an error with one of the sockets, or somewhere in the application where an Exception is thrown, * the Exception is sent back down the stack, handled by the Server and bubbled back up the application through this method * @param ConnectionInterface $conn * @param \Exception $e * @throws \Exception */ function onError(ConnectionInterface $conn, \Exception $e) { unset($this->connections[$conn->resourceId]); $conn->close(); } /** * Triggered when a client sends data through the socket * @param \Ratchet\ConnectionInterface $conn The socket/connection that sent the message to your application * @param string $msg The message received * @throws \Exception */ function onMessage(ConnectionInterface $conn, $msg) { } }