Ответы пользователя по тегу WebSocket
  • Как отобразить оповещение от сервера на разных страницах для разных пользователей отдельно?

    Слишком много текста. Пиши короче. Правильно заданный вопрос - уже половина ответа.

    как в 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
    Ответ написан
    Комментировать
  • Как работать с websocket в php без библиотек?

    Я раньше тоже писал свой вебсокет-сервер на php с нуля, о чём написал статью на хабре, а весь код опубликован на гитхабе.
    В комментах к статье были полезные советы и моменты, которых я изначально не учитывал. В итоге сделал несколько реализаций.
    Сейчас же использую workerman. У него большое комьюнити, понятный код и никаких зависимостей от сторонних библиотек.
    Ответ написан
    9 комментариев