#php #phpwebsocket
#php #phpwebsocket
Вопрос:
Я использую этот репозиторий для своего сервера WebSocket, единственная проблема, насколько я вижу, заключается в том, что он сгенерировал идентификаторы сокетов с
$i = 1;
while (isset($this->wsRead[$i])) $i ;
return $i;
Что я хотел бы, так это передать идентификатор сокету при подключении
ws://127.0.0.1:9300?id=12345
проблема в том, что я не знаю, как получить этот параметр GET до присвоения идентификатора. Я долго искал и ничего не получал. Насколько я могу видеть, заголовки могут получать только эти функции: socket_read и socket_recv, но проблема в том, что они каким-то образом блокируют рукопожатие, потому что если я их использую, то в браузере я могу видеть
failed: Error during WebSocket handshake: net::ERR_INVALID_HTTP_RESPONSE
Существуют ли какие-либо другие способы получения идентификатора, который я передаю при подключении?
Комментарии:
1. В
wsProcessClientHandshake
методе библиотеки вы можете найти это в$request
переменной. Но я не уверен2. Вы правы, я могу получить это там, но это слишком поздно, поскольку идентификатор уже был назначен на тот момент. Мне нужно получить заголовки в функции wsAddClient (), поскольку это место, где сокету присваивается идентификатор.
3. Зачем вам вообще нужен идентификатор? Разве вы не можете указать свой идентификатор сообщением после установления соединения, а затем отобразить его в своем коде, не касаясь библиотеки?
4. Я мог бы, и я делаю это прямо сейчас, но это означает, что я должен указывать идентификатор для всех сообщений, чтобы проверить, разрешено ли пользователю вообще выполнять какие-либо действия в WS.
5. мое предложение состояло в том, чтобы отправить идентификатор в первое сообщение, а затем сохранить предоставленный вами идентификатор в массиве, используя идентификатор сокета в качестве ключа. Затем для любого действия вы можете выполнить поиск по предоставленному идентификатору текущего соединения