Подскажите, как правильно организовать работу с вебсокетами на PHP? Очень важный ньюанс: возвращаемые ответы отличаются для каждого пользователя. Т.е. при каждом запросе я должен иметь возможность получить $_SESSION и $_SERVER для пользователя, отправившего этот запрос.
$_SESSION и $_SERVER нужны для работы поверх http, а у вас голые (почти) tcp сокеты. Вот и думайте.
Обычно при установке соединения проводится аунтефикацию и все. По сути алгоритм простой
Сервер слушает входящие соединения
Клиент соединяется с сервером
Клиент отправляет данные (токен скажем)
Сервер проверят токен и определяет какому пользователю соответствует данное соединение.
Ну а дальше просто. Если нужно какому-то пользователю послать данные, находим все соответсвующие соединения и шлем данные.
$_SESSION и $_SERVER для этих целей вообще ненужны.
Если очень нужны идентификаторы сессии (которые, очевидно, в том или ином виде, лежат в куках), то можно достать их во время "рукопожатия". Первый пакет от клиента - это HTTP-пакет (с одним из headers 'HTTP/1.1 101 Switching Protocols'), смею предположить, что среди прочего и куки в нем тоже будут.