国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如何廣播(群發(fā))數(shù)據(jù)

范例(定時(shí)廣播)

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

$worker = new Worker('websocket://0.0.0.0:2020');
// 這個(gè)例子中進(jìn)程數(shù)必須為1
$worker->count = 1;
// 進(jìn)程啟動(dòng)時(shí)設(shè)置一個(gè)定時(shí)器,定時(shí)向所有客戶端連接發(fā)送數(shù)據(jù)
$worker->onWorkerStart = function($worker)
{
    // 定時(shí),每10秒一次
    Timer::add(10, function()use($worker)
    {
        // 遍歷當(dāng)前進(jìn)程所有的客戶端連接,發(fā)送當(dāng)前服務(wù)器的時(shí)間
        foreach($worker->connections as $connection)
        {
            $connection->send(time());
        }
    });
};
// 運(yùn)行worker
Worker::runAll();

范例(群聊)

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');
// 這個(gè)例子中進(jìn)程數(shù)必須為1
$worker->count = 1;
// 客戶端發(fā)來消息時(shí),廣播給其它用戶
$worker->onMessage = function(TcpConnection $connection, $message)use($worker)
{
    foreach($worker->connections as $connection)
    {
        $connection->send($message);
    }
};
// 運(yùn)行worker
Worker::runAll();

說明:

單進(jìn)程:
以上例子只能單進(jìn)程$worker->count=1),因?yàn)槎噙M(jìn)程時(shí)多個(gè)客戶端可能連接到不同的進(jìn)程中,進(jìn)程間的客戶端是隔離的,無法直接通訊,也就是A進(jìn)程中無法直接操作B進(jìn)程的客戶端connection對(duì)象發(fā)送數(shù)據(jù)。(要做到這點(diǎn),需要進(jìn)程間通訊,比如可以使用Channel組件,例如例子-集群發(fā)送例子-分組發(fā)送)。

建議用GatewayWorker
在workerman基礎(chǔ)上開發(fā)的GatewayWoker框架提供了更方便推送機(jī)制,包括組播、廣播等,可以設(shè)置多進(jìn)程甚至可以多服務(wù)器部署,如果需要給客戶端推送數(shù)據(jù),建議使用GatewayWorker框架。

GatewayWorker手冊(cè)地址 https://doc2.workerman.net

編輯于2024-03-13 17:37:19 完善本頁 +發(fā)起討論
贊助商