Привет всем)) подскажите пожалуйста как решить вот такую задачу. Имеем
1. Сокет сервер на Walkor/Workerman
2. Чат котором много комнат.
3. Один Вокер
Как сейчас работает:
1. Клиент аутентифицируется в чате, на сокет сервер отправляется сообщение где указаны авторизационные данные клиента, в том числе и ИД комнаты и все это складывается в массив. Срабатывает событие onConnect
2. Клиент отправляет сообщение в чат, на сервере срабатывает событие onMessage. Я в цикле прохожу все соединения и смотрю какие соединения авторизированны для получения этого сообщения (ищу соединения из этой комнаты).
Как надо что бы работало:
1. Что бы было несколько вокеров. Когда соединений становится тысячи - становится заметна очередь обработки соединений.
Почему сейчас не получается с некоторые вокерами:
1. Потому что каждое соединение коннектится к одному вокеру, и он отправляет сообщения только тем кто поключен к нему.
Что пробовал:
1. Использовать Редис для хранения соединений - но не тут то было)) открытое соединение не засунешь в хранилище
2. Использовал каналы для этого сервера
https://github.com/walkor/Channel - но или я что то не так понимаю)) или это не то что мне надо)) канал отправляет сообщение ВСЕМ кто находится в вокере.. он не инициирует событие onMessage в других вокерах... он просто тупо рассылает по всем клиентам))
Что делать?)
Спасибо)
П.С. Делать сервер не на PHP не вариант... тут рендерятся сообщения в твиге, куча моделей коннетится.. в общем слишком связанно все(