frost18
@frost18
Программист PHP

Как начать использовать технологию WebSocket?

В проекте который я делаю на Yii2, имеются всплывающие уведомления для асинхронности я бомбил сервер ajax запросами раз в 10 секунд. Сейчас мне нужно делать онлайн консультацию, а потом еще и мессенджер. Изучаю технологии которые мне помогут в этом, от "long polling" отказался в пользу "WebSocket".
Хочется сразу попробовать вебсокеты, не знаю с чего начать. Поиск предлагает отдельные серверы, фреймворки и т.п (phpdaemon, ratchet, libevent), можно как нибудь проще попробовать, какие-нибудь примеры на чистом php и js, или простую библиотеку для работы?
И вообще я правильно мыслю, для чата вебсокеты правильное решение?
  • Вопрос задан
  • 20619 просмотров
Пригласить эксперта
Ответы на вопрос 15
bagau
@bagau
Фронтент разработчик
На прошлой работе я писал онлайн-консультанта с использованием веб-сокетов. На сервере php с вебсокетом, на клиенте javascript. Комментировал код, можете посмотреть здесь на Github.
Файл websocket.php - логика самого вебсокета, с комментариями. Я ничего не понимал в вебсокетах, поэтому комментировал каждую строку, чтобы понять.
файл start_socket.php - работа с вебсокетом.
Написано без использования фреймворков.
Онлайн консультант в принципе рабочий, но я его не смог доделать, ушел с работы
Ответ написан
Комментировать
ukko
@ukko
php, js (es6), golang, symfony, react
Вам стоит почитать о демонизации процессов, как их перезапускать в случае падений, как обрабатывать различные ситуации, очищать память и прочее.

В этом демоне подключаете любую популярную библиотеку (ratchet, wrench, ...).

Ps Менять технологии на nodejs я не вижу смысла. Nodejs не идеальная технология со своими проблемами.
Ответ написан
Комментировать
winbackgo
@winbackgo
Не знаю как там ratchet но поднять вменяемый socket server на php мне так и не удалось. Перешел на javascript (node.js). Доволен. Использую socket.io и socketcluster.io. Еще есть lightstreamer (java), мощная штука, все из коробки, но бесплатная версия имеет ряд ограничений.
Ответ написан
@Levhav
Возьмусь за разработку проектов любой сложности.
Буквально на днях писал статью со списком существующих комет серверов.
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Чат / консультацию поднимите на nodejs сервере + socket.io – есть готовые примеры. Для чата и любого взаимодействия в реальном времени – websockets хороший выбор.
Ответ написан
Комментировать
@SilverSlice
Проще всего будет начать с официального руководства по Ratchet. Также можете посмотреть видео, в котором тоже самое наглядно показано.
Ответ написан
Комментировать
frost18
@frost18 Автор вопроса
Программист PHP
Всем спасибо, очень помогли.
Использовал Ratchet, все что хотел - сделал, остался доволен, для первого знакомства и понимания работы comet сервера самое то.
Ответ написан
vanesxl
@vanesxl
Ну что касается клиентской части, тут все просто, посмотреть можно тут
А вот серверную часть я бы на php делать не стал... может конечно у меня своеобразные взгляды на этот язык, но заставлять скрипт выполняться в постоянном цикле, бред какой то... Я бы советовал написать сервер на языке, к примеру java, есть очень хорошие библиотеки, все просто.
Ответ написан
За тот срок, что прошел с написания этого вопроса вы уже скорее всего подобрали для себя websocket сервер, но если нет - присмотритесь к centrifugo. habrahabr.ru/company/mailru/blog/266017 - статья о сервере, https://fzambia.gitbooks.io/centrifugal/content/li... - взаимодействие с php (на ларавел есть пакет, на yii может тоже найдется).
Ответ написан
@timfcsm
Ответ написан
Комментировать
@aizhar777
Тоже в своем проекте при реализации чата между пользователями, начал использовать long polling но потом отказался в пользу Ratchet и пуш socketo.me/docs/push
Ответ написан
Комментировать
@Ba3reH
Можно посмотреть в сторону протокола WAMP wamp-proto.org
На сайте есть реализации на разных языках, в том числе на PHP и JavaScript.
Ответ написан
Комментировать
@dizews
вот мой вариант решения для Yii2 . там связка php c nginx-модулем.
Если есть вопросы, предложения пишите ну или пулл реквесты :)
Ответ написан
Комментировать
@LAV45
Пример использования WebSockets (Ratchet) & YiiFramework 2.
https://vk.com/yiiframework?w=wall-10814290_8238%2Fall
gostash.it/ru/stashes/346
Ответ написан
Santacruz
@Santacruz
Cryptocurrencies + Trading
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект