@time_is_always_against_us

Какую socket библиотеку выбрать для чата и оповещений в 2019?

Казалось бы на обилие информации в сети самому не удалось разобраться...

Задачи:
1. Переписать текущий чат, который работает на Ajax, PHP, MySQL (memory table), JS + jQuery. Чат сложный - с приватными сообщениями, группами (один пользователь может принадлежать нескольким группам) и прочим.
2. Обработка событий. Например, пользователь сделал заказ, информацию об этом заказе нужно в реальном времени передать модератору - не уведомление, а всю информацию о заказе сразу. Сейчас все это опять же работает через Ajax, PHP, MySQL, JS + jQuery.

По статьям на хабре и вообще гугле/ютубе нашел 2 библиотеки:
- Workerman (вроде для всего подходит),
- Ratchet (пишут, что не умеет оповещать отдельного пользователя т.е. подходит только для чата).
Какую посоветуете?

Какой протокол выбрать? Ws, Wamp, TCP, UDP.

Для чата и оповещений должен работать одно сокет-соединение с клиентом или несколько для каждого события? И соответственно на сервере нужно запускать несколько демонов под каждый обработчик?

Для кеша сервер использует Redis, там есть subpub, возможно даже он для этого подходит, но ничего на эту тему не нагуглил.

И если знаете какие-нибудь обучающие ролики или статьи буду рад. То, что находил очень поверхностно, не дает представления, как на этом реализовать что-то более сложное.
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Levhav
Возьмусь за разработку проектов любой сложности.
Попробуйте этот проект comet-server.com там есть необходимое для вас апи.
Ответ написан
Комментировать
@frimuchkov
А зачем переписывать, если работает?)

Настоятельно не рекомендую использовать PHP для этого) Самый простой вариант - использовать https://cloudws.io, в нём создаёте нужные каналы(например, group_$ID, dialog_$FIRSTUSER_$SECONDUSER, orders и т.д.), пользователю/менеджеру на фронт кидаете полученный ID и пусть он слушает через сокет на наличие сообщений/. Более сложный вариант - повторить написанное, но использовать свою реализацию WebSocket-сервера на node.js, например.

С отправкой заказов двоякая ситуация, я бы советовал, всё же, отправлять только id заказа и запрашивать информацию у сервера, так выглядит надёжнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы