Задать вопрос

Walkor/Workerman как реализовать чат с комнатами и несколькими вокерами?

Привет всем)) подскажите пожалуйста как решить вот такую задачу. Имеем
1. Сокет сервер на Walkor/Workerman
2. Чат котором много комнат.
3. Один Вокер

Как сейчас работает:
1. Клиент аутентифицируется в чате, на сокет сервер отправляется сообщение где указаны авторизационные данные клиента, в том числе и ИД комнаты и все это складывается в массив. Срабатывает событие onConnect
2. Клиент отправляет сообщение в чат, на сервере срабатывает событие onMessage. Я в цикле прохожу все соединения и смотрю какие соединения авторизированны для получения этого сообщения (ищу соединения из этой комнаты).

Как надо что бы работало:
1. Что бы было несколько вокеров. Когда соединений становится тысячи - становится заметна очередь обработки соединений.

Почему сейчас не получается с некоторые вокерами:
1. Потому что каждое соединение коннектится к одному вокеру, и он отправляет сообщения только тем кто поключен к нему.

Что пробовал:
1. Использовать Редис для хранения соединений - но не тут то было)) открытое соединение не засунешь в хранилище
2. Использовал каналы для этого сервера https://github.com/walkor/Channel - но или я что то не так понимаю)) или это не то что мне надо)) канал отправляет сообщение ВСЕМ кто находится в вокере.. он не инициирует событие onMessage в других вокерах... он просто тупо рассылает по всем клиентам))

Что делать?)
Спасибо)

П.С. Делать сервер не на PHP не вариант... тут рендерятся сообщения в твиге, куча моделей коннетится.. в общем слишком связанно все(
  • Вопрос задан
  • 1243 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kak2z Автор вопроса
В общем сам себе отвечаю... вот это расширение подходит для рассылки по вокерам.. https://github.com/walkor/Channel
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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