/** * {@inheritdoc} */ function onSubscribe(ConnectionInterface $conn, $topic) { // Send all the rooms to the person who just subscribed to the room list if (static::CTRL_ROOMS == $topic) { foreach ($this->rooms as $room => $patrons) { if (!$this->isControl($room)) { $conn->event(static::CTRL_ROOMS, array($room, array_search($room, $this->roomLookup), 1)); } } } // Room does not exist if (!array_key_exists($topic, $this->rooms)) { return; } // Notify everyone this guy has joined the room they're in $this->broadcast($topic, array('joinRoom', $conn->WAMP->sessionId, $conn->Chat->name), $conn); // List all the people already in the room to the person who just joined foreach ($this->rooms[$topic] as $patron) { $conn->event($topic, array('joinRoom', $patron->WAMP->sessionId, $patron->Chat->name)); } $this->rooms[$topic]->attach($conn); $conn->Chat->rooms[$topic] = 1; }