Компонент распределенной связи Channel
(требуется версия Workerman >= 3.3.0)
Исходный код: https://github.com/walkor/Channel
Channel - это компонент распределенной связи, используемый для обмена сообщениями между процессами или серверами.
Особенности
- Основан на модели издатель-подписчик
- Неблокирующий ввод-вывод
Принцип работы
Channel включает в себя сервер Channel/Server и клиент Channel/Client
Клиент Channel/Client подключается к серверу Channel/Server с помощью интерфейса connect и поддерживает долгосрочное соединение
Клиент Channel/Client сообщает серверу Channel/Server, на какие события он подписан, и регистрирует функции обратного вызова событий (вызов обратной функции выполняется в процессе, в котором находится клиент Channel/Client)
Клиент Channel/Client с помощью интерфейса publish публикует определенное событие и связанные с ним данные серверу Channel/Server
После получения события и данных сервер Channel/Server отправляет их зарегистрированным клиентам Channel/Client, заинтересованным в этом событии
Клиент Channel/Client, получивший событие и данные, вызывает зарегистрированный обратный вызов, установленный с помощью интерфейса on
Клиент Channel/Client получает только те события, на которые он подписан, и вызывает соответствующие обратные вызовы
Установка
composer require workerman/channel
Примечание
Channel можно использовать только в среде Workerman, нельзя использовать в среде php-fpm.