2 дня голову ломал, вот решение: сразу после соединения с клинта посылаем id (ну или какое то свойство, которое будет служить идентификатором пользователя), взятый откуда угодно, допустим из input[hidden].
conn.onopen = function(e) {
conn.send(JSON.stringify({userId : document.getElementById('user_id').value}));
};
Дальше нужно динамически записать этот id в свойство объекта:
ConnectionInterface $conn
public function onMessage(ConnectionInterface $from, $msg)
{
$data = json_decode($msg);
if (property_exists($data, 'userId')) {
$userId = $data->userId;
$from->userId = $userId;
$this->users[$userId] = $from;
} else {
$this->users[$data->to]->send($msg);
}
}
Т.е парсим прилетевший к нам Json, и смотрим, если есть специальный флаг
userId, то просто приклеим к нашему объекту подключения. Думаю понятно, остальное сами дофантазируете :)