PHPDaemon\Examples\ExamplePubSub::onReady PHP Method

onReady() public method

Called when the worker is ready to go.
public onReady ( ) : void
return void
    public function onReady()
    {
        $appInstance = $this;
        // a reference to this application instance for ExampleWebSocketRoute
        \PHPDaemon\Servers\WebSocket\Pool::getInstance()->addRoute('ExamplePubSub', function ($client) use($appInstance) {
            return new ExamplePubSubWebSocketRoute($client, $appInstance);
        });
        $this->sql = \PHPDaemon\Clients\MySQL\Pool::getInstance();
        $this->pubsub = new \PHPDaemon\PubSub\PubSub();
        $this->pubsub->addEvent('usersNum', \PHPDaemon\PubSub\PubSubEvent::init()->onActivation(function ($pubsub) use($appInstance) {
            \PHPDaemon\Core\Daemon::log('onActivation');
            if (isset($pubsub->event)) {
                \PHPDaemon\Core\Timer::setTimeout($pubsub->event, 0);
                return;
            }
            $pubsub->event = setTimeout(function ($timer) use($pubsub, $appInstance) {
                $appInstance->sql->getConnection(function ($sql) use($pubsub) {
                    if (!$sql->connected) {
                        return;
                    }
                    $sql->query('SELECT COUNT(*) `num` FROM `dle_users`', function ($sql, $success) use($pubsub) {
                        $pubsub->pub(sizeof($sql->resultRows) ? $sql->resultRows[0]['num'] : 'null');
                    });
                });
                $timer->timeout(5000000.0);
                // 5 seconds
            }, 0);
        })->onDeactivation(function ($pubsub) {
            if (isset($pubsub->event)) {
                \PHPDaemon\Core\Timer::cancelTimeout($pubsub->event);
            }
        }));
    }