Como transmitir (broadcast) dados

Exemplo (Transmissão programada)

use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('websocket://0.0.0.0:2020');
// Neste exemplo, o número de processos deve ser 1
$worker->count = 1;
// Ao iniciar o processo, configura um temporizador para enviar dados a todas as conexões de clientes
$worker->onWorkerStart = function($worker)
{
    // Intervalo, a cada 10 segundos
    Timer::add(10, function()use($worker)
    {
        // Percorre todas as conexões de clientes do processo atual e envia a hora atual do servidor
        foreach($worker->connections as $connection)
        {
            $connection->send(time());
        }
    });
};
// Executa o worker
Worker::runAll();

Exemplo (Chat em grupo)

use Workerman\Worker;
use Workerman\Timer;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('websocket://0.0.0.0:2020');
// Neste exemplo, o número de processos deve ser 1
$worker->count = 1;
// Quando um cliente envia uma mensagem, transmite para outros usuários
$worker->onMessage = function(TcpConnection $connection, $message)use($worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send($message);
    }
};
// Executa o worker
Worker::runAll();

Observações:

Processo único:
Os exemplos acima somente podem ser executados em um único processo ($worker->count=1), porque em múltiplos processos, vários clientes podem estar conectados a processos diferentes, e os clientes entre processos são isolados, não conseguindo se comunicar diretamente, ou seja, o processo A não pode diretamente operar o objeto de conexão do cliente do processo B para enviar dados. (Para fazer isso, é necessário comunicação entre processos, como usando o componente Channel, por exemplo, exemplo - Envio em cluster, exemplo - Envio em grupo).

Recomendado usar o GatewayWorker
O framework GatewayWorker, desenvolvido sobre o Workerman, oferece um mecanismo de envio mais conveniente, incluindo multicast, broadcast, etc., podendo configurar múltiplos processos e até implantações em múltiplos servidores. Se você precisa enviar dados para os clientes, é recomendável usar o framework GatewayWorker.

Endereço do manual do GatewayWorker: https://doc2.workerman.net