Слишком много текста. Пиши короче. Правильно заданный вопрос - уже половина ответа.
как в workerman-е, получить содержимое $_COOKIE ?
я же тебе уже кидал ссылку на мои примеры:
https://github.com/morozovsk/workerman-examples
вот здесь как раз и есть пример с $_COOKIE:
https://github.com/morozovsk/workerman-examples/bl...на странице статей нету $_GET параметра, который бы индефицировал пользователя
так он и не должен быть на странице статей. $_GET вызывается в вебсокет сервере.
На странице статей надо так:
<script>
ws = new WebSocket("ws://127.0.0.1:8000/?user=<?=$user?>");
ws.onmessage = function(evt) {alert(evt.data);};
</script>
Тогда указанный параметр пробросится в вебсокет сервер и будет доступен в $_GET
Согласно моего примеру ты можешь пробросить в гет-параметр любую инфу, например, какая эта страница или какой айди статьи. А дальше уже используя эту инфу заполняешь в вебсокетсервере массив с нужной тебе связью (например
так), кто где находится и позже из основного сайта отправляешь уведомление, в вебсокет сервер на основе хранищийся в нём информации (кто где находится на сайте) отправляет уведомление тому кому надо.
Если для тебя это слишком сложно, тогда возможно тебе взять что-то другое вместо воркермана, там где уже есть реализация схемы pub/sub. Хотя она может уже и в воркермане есть.
В моих примерах, которые я тебе уже второй раз скидываю как раз показано как отправить сообщение конкретному пользователю, а не всем. Писать новые примеры под твою конкретную задачу я не планирую, у меня сейчас нет на это время.
Важно:
Куки на порту 80 и на порту 1234 разные, это ты можешь сам убедиться открыв историю запросов в консоли браузера.
Чтобы куки в вебсокет сервере были такие же как и на основном сайте вебсокет сервер нужно проксировать, например через nginx.
Что-то типа:
location / - php
location /websocket - proxy_pass на 1234