Не очень понятен вопрос. Ты хочешь отправить $_SESSION или какой то его ключ только что подключившегося к сокету юзеру? $connection->send(json_encode($_SESSION))
Артем Прохоров, мне нужно аунтифицировать каждый $connection, я хочу делать привязку к $_SESSION['username'].
Но как получать $_SESSION подключившегося? $_SESSION выводит пустой массив.
cannabioid1337, видел реализацию когда в const ws = new WebSocket('ws://localhost:1337?id=<?php echo $_SESSION['username'] ?>'); передают get, но это не безопасно, и подвергается подделке.
cannabioid1337, Тебе скорее всего хочется понять что это за юзер на этапе только что подключившегося юзера. Но проще уже на клиентской стороне послать сообщение на onOpen, а на сервере уже по пришедшим данным (любым) его аутентифицировать или нет. Да, по сути мы его аутентифицируем после установившегося соединения(и было бы странно, если бы это не вызывало у тебя вопросов), но это единственный путь.
Методов для пре конекшена юзера нету.
А вот уже на стороне сокета в onMessage идентифицировать пришедшие сообщения к примеру по пришедшем данным, к примеру ты всегда отправляешь асециативный массив, где ключ "status" будет означать для чего это сообщение, 0 для аутентификации, 1 для обычного получения, а "data" уже будет хранить пришедшие данные.
cannabioid1337, Но само по себе, что он подключился до аутентификации не страшно, так как подключившись он никаких данных до аутентификации (как ты ее реализуешь), не получит. А в случаи если юзер не прошел ее, то просто оборви с ним соединение (благо воркерман позволяет это).
Артем Прохоров, как вариант можно передавать на onOpen значение $_COOKIE['PHPSESSID'], вставлять его в session_id();
И уже на сервере присваивать $_SESSION['username'] = $connection и кидать в массив пользователей?
Артем Прохоров, Cлучилась беда. Вроде бы все работает, но только на первый запуск... Выдает ошибки
PHP Warning: session_id(): Session ID cannot be changed after headers have already been sent in C:\xampp\htdocs\server\server.php on line 23
PHP Warning: session_start(): Session cannot be started after headers have already been sent in C:\xampp\htdocs\server\server.php on line 24
Несмотря на то, что сессию я завершаю по окончанию скрипта.