Как получить данные об авторизованном пользователе Yii в Websocket?

Для получения данных об авторизованном пользователе Yii в Websocket необходимо выполнить несколько шагов.

1. В начале сессии WebSocket, когда происходит установка соединения с клиентом, нужно передать индентификатор сессии, который будет использоваться для идентификации пользователя.

2. После этого, на сервере необходимо установить сессию Yii с помощью переданного идентификатора сессии.

$session = Yii::$app->session;
$session->open();
$sessionId = $_GET['sessionId']; // полученный индентификатор сессии
$session->setId($sessionId);
$session->regenerateID();

3. После установки сессии можно получить данные об авторизованном пользователе, используя объект IdentityInterface Yii. Этот объект хранит информацию о текущем авторизованном пользователе.

$webUser = Yii::$app->user;
if (!$webUser->isGuest) {
    $userIdentity = $webUser->getIdentity();
    // Получение данных об авторизованном пользователе
    $username = $userIdentity->username;
    $email = $userIdentity->email;
    // ...
} else {
    // Пользователь не авторизован
}

4. Теперь у вас есть доступ к данным об авторизованном пользователе в WebSocket сессии и вы можете использовать эти данные по своему усмотрению. Помимо получения информации о пользователе, вы также можете обновлять данные сессии, проверять его права доступа и делать другие операции.

Важно отметить, что WebSocket сессия работает независимо от HTTP сессии, поэтому вам нужно убедиться, что оба типа сессий взаимодействуют между собой правильно. Если у вас возникнут проблемы с синхронизацией данных между WebSocket и HTTP сессиями, вам может потребоваться установить специальную систему управления состоянием (например, Redis или базу данных) для обмена данными между серверами.