<?php
use Workerman\Timer;
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function () {
    $mqttClients = [];
    for ($i = 0; $i < 10000; $i++) {
        $mqttClients[$i] = new Workerman\Mqtt\Client('mqtt://emqx:1883');
        $mqttClients[$i]->onConnect = function ($mqttClient) {
            $mqttClient->subscribe('test');
        };
        $mqttClients[$i]->onMessage = function ($topic, $content) use ($i) {
            echo $i, "\t", $topic, "\t", $content, "\n";
        };
        $mqttClients[$i]->connect();
    }
    $num = 1;
    Timer::add(1, function () use ($mqttClients, &$num) {
        try {
            $mqttClients[0]->publish('test', 'hello ' . $num);
            $num += 1;
        } catch (Throwable $e) {
            echo "Throwable:", $e->getMessage(), "\n";
        }
    });
};
try {
    Worker::runAll();
} catch (Throwable $e) {
    echo $e->getMessage(), "\n";
}