Search by

phpsoftbox / broadcaster

Broadcaster component for the PhpSoftBox framework (Pushr)

Maintainers

Package info

github.com/phpsoftbox/broadcaster

pkg:composer/phpsoftbox/broadcaster

Transparency log

Statistics

Installs: 115

Dependents: 2

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-09-02 14:13 UTC

This package is auto-updated.

Last update: 2026-09-02 14:14:09 UTC


README

About

phpsoftbox/broadcaster — компонент для запуска WebSocket сервера и обмена сообщениями между сервисами. Драйвер Pushr реализует собственный протокол с авторизацией по app_id и signature.

Ключевые свойства:

  • сервер PushrServer (WebSocket)
  • клиент PushrClient для публикации/подписки
  • подписи PushrSignature
  • подписи каналов PushrChannelAuth
  • реестр каналов ChannelRegistry
  • поддержка каналов (rooms), включая приватные

Quick Start

Запуск сервера:

use PhpSoftBox\Broadcaster\Pushr\PushrAppRegistry;
use PhpSoftBox\Broadcaster\Pushr\PushrServer;

$registry = new PushrAppRegistry([
    'app-1' => 'secret-1',
]);

$server = new PushrServer($registry, host: '0.0.0.0', port: 8080);
$server->run();

Подключение клиентом:

use PhpSoftBox\Broadcaster\Pushr\PushrClient;

$client = new PushrClient('127.0.0.1', 8080, 'app-1', 'secret-1');
$client->connect();
$client->subscribe('news');
$client->publish('news', 'message', ['text' => 'hello']);

Публикация из PHP-кода без постоянного подключения:

use PhpSoftBox\Broadcaster\Pushr\PushrPublisher;
use PhpSoftBox\Broadcaster\Pushr\PushrPublisherOptions;

$publisher = new PushrPublisher(
    'app-1',
    'secret-1',
    '127.0.0.1',
    8080,
    options: new PushrPublisherOptions(
        connectTimeoutSeconds: 0.5,
        handshakeTimeoutSeconds: 0.5,
        readTimeoutSeconds: 0.5,
        writeTimeoutSeconds: 0.5,
    ),
);
$publisher->publish('news', 'message', ['text' => 'hello']);
$publisher->publishMany(['news', 'private.user.10'], 'message', ['text' => 'hello']);

publishMany() открывает одно соединение для всех каналов. Синхронный publisher не скрывает ошибки: приложение само решает, должна ли ошибка публикации прервать операцию. Для гарантированной доставки через очередь или transactional outbox используйте DeferredPushrPublisher со своей реализацией PushrPublicationDispatcherInterface.

Оглавление