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