Verileri Yayınlama (Grup Yayını)

Örnek (Zamanlı Yayın)

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

$worker = new Worker('websocket://0.0.0.0:2020');
// Bu örnekte süreç sayısı 1 olmalıdır
$worker->count = 1;
// Süreç başladığında, tüm istemci bağlantılarına veri göndermek için bir zamanlayıcı ayarlayın
$worker->onWorkerStart = function($worker)
{
    // Her 10 saniyede bir
    Timer::add(10, function()use($worker)
    {
        // Mevcut süreçteki tüm istemci bağlantılarını döngüye alarak, mevcut sunucunun zamanını gönder
        foreach($worker->connections as $connection)
        {
            $connection->send(time());
        }
    });
};
// Worker'ı çalıştır
Worker::runAll();

Örnek (Grup Sohbeti)

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');
// Bu örnekte süreç sayısı 1 olmalıdır
$worker->count = 1;
// İstemciden mesaj geldiğinde, diğer kullanıcılara yayın yap
$worker->onMessage = function(TcpConnection $connection, $message)use($worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send($message);
    }
};
// Worker'ı çalıştır
Worker::runAll();

Açıklama:

Tek Süreç:
Yukarıdaki örnek yalnızca tek süreç ($worker->count=1 ile) çalıştırılabilir, çünkü çoklu süreçte birden fazla istemci farklı süreçlere bağlı olabilir, süreçler arası istemciler izole olduğu için doğrudan iletişim kuramazlar; yani A sürecindeki bir istemci bağlantı nesnesini doğrudan B sürecindeki istemci için veri göndermek amacıyla kullanamazsınız. (Bunu başarmak için, süreçler arası iletişim gerekir; örneğin Channel bileşenini kullanarak, örnek - Kümeleme Yayını, örnek - Grup Yayını gibi).

GatewayWorker Kullanmanızı Öneririz
Workerman temelinde geliştirilmiş olan GatewayWorker çerçevesi, grup yayını, yayın gibi daha kullanışlı bir itme mekanizması sunar; çoklu süreç ayarlanabilir hatta çoklu sunucu dağıtımı yapılabilir. İstemcilere veri göndermeniz gerekiyorsa, GatewayWorker çerçevesini kullanmanızı öneririz.

GatewayWorker kılavuzu adresi: https://doc2.workerman.net