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

workerman Client::publish發(fā)布事件沒有執(zhí)行回調函數

tender

代碼如下 我是使用的workerman+tp3.2框架 worker類代碼如下:
在類構造方法里 實例化一個\Channel\Server服務端 和 WebSocket服務端(在原代碼的基礎上新增Channel組件,webSocket是可以正常跑起來的,業(yè)務在用)
public function __construct(){

    // Channel組件服務端  不傳參數默認是監(jiān)聽0.0.0.0:2206
    $channel_server = new Server('0.0.0.0',8865);

    $this->worker = new                                         Worker('websocket://0.0.0.0:8866');// 實例化 Websocket 服務
    $this->worker->count = 10;// 設置進程數
    $this->worker->name ='pusher';
    $this->init();//初始化
    $this->worker->uidConnections = array();
    // 設置回調
    foreach (['onWorkerStart', 'onConnect', 'onMessage', 'onClose', 'onError', 'onBufferFull', 'onBufferDrain', 'onWorkerStop', 'onWorkerReload'] as $event) {
        if (method_exists($this, $event)) {
            $this->worker->$event = [$this, $event];
        }
    }
    // Run worker
    Worker::runAll();
}

在 worker進程 onWorkerStart 事件中注冊事件 send_to_uid 代碼如下:

/**
 * 每個進程啟動
 * @param $worker
 */
public function onWorkerStart($worker)
{
    // Channel客戶端連接到Channel服務端
    Client::connect('127.0.0.1', 8865);

    //注冊事件
    $a = Client::on('send_to_uid',function ($event_data)use ($worker){

        echo "發(fā)布事件";
        echo "\n\r";
        echo "發(fā)送數據";
        echo "\n\r";
        var_dump($event_data);
    });
}

最后在onMessage事件中 Client::publish 發(fā)布事件:

public function onMessage($connection, $data)
{
    Client::publish('send_to_uid',array('uid'=>11111,'message'=>'1236456'));
    echo "已發(fā)布";
}

但是并沒有執(zhí)行注冊事件時的回調函數。執(zhí)行結果如下:
截圖

請大佬指教。

3286 2 0
2個回答

six
public function onWorkerStart($worker)
{
    // Channel客戶端連接到Channel服務端
    Client::connect('127.0.0.1', 8865);

    //注冊事件
    $a = Client::on('send_to_uid',function ($event_data)use ($worker){

        echo "發(fā)布事件";
        echo "\n\r";
        echo "發(fā)送數據";
        echo "\n\r";
        var_dump($event_data);
    });
}

Client::connect('127.0.0.1', 8865);下一行打印下日志,確認下是否真的運行了監(jiān)聽代碼。我覺得有可能onWorkerStart沒運行到。

  • 暫無評論
tender

截圖
截圖

onWorkerStart事件運行了 但是send_to_uid事件的function沒有執(zhí)行。

  • tender 2020-06-02

    已解決。。把channel 服務單拆出去跑一個服務 就可以了 感謝大佬

年代過于久遠,無法發(fā)表回答
??