迁徙数据/migratorydata-client-reactphp

React PHP 的迁徙数据客户端 API

6.0.7 2023-07-31 11:16 UTC

This package is not auto-updated.

Last update: 2024-09-23 16:36:54 UTC


README

以下是一个教程和使用示例。如需更多信息,请参阅MigratoryData 文档 6.x

用法

使用 composer 安装迁徙数据客户端库 5.x(迁徙数据客户端版本 5 可与 MigratoryData 服务器 5.0.* 一起使用)

composer require migratorydata/migratorydata-client-reactphp:5.*

使用 composer 安装迁徙数据客户端库 6.x(迁徙数据客户端版本 6 可与 MigratoryData 服务器 6.0.1 或更高版本一起使用)

composer require migratorydata/migratorydata-client-reactphp:6.*

导入类并定义迁徙数据回调监听器

require __DIR__ . '/vendor/autoload.php';

use MigratoryData\Client\MigratoryDataClient;
use MigratoryData\Client\MigratoryDataMessage;
use MigratoryData\Client\MigratoryDataListener;

class MyListener implements MigratoryDataListener
{
    public function onMessage($message)
    {
        echo "Got message: " . $message . "\n";
    }

    public function onStatus($status, $info)
    {
        echo "Got status: " . $status . " - " . $info . "\n";
    }
}

创建事件循环

$loop = \React\EventLoop\Factory::create();

创建迁徙数据客户端并附加事件循环

$client = new MigratoryDataClient(); 
$client->setLoop($loop);

初始化并连接迁徙数据客户端

$client->setEntitlementToken("some-token");
$client->setServers(array("http://127.0.0.1:8800"));

$client->subscribe(array("/server/status"));

$client->connect();

每秒向迁徙数据服务器发布一条消息

$loop->addPeriodicTimer(1, function () use ($client) {
    try {
        $client->publish(new MigratoryDataMessage("/server/status", "Msg " . time(), "closure-" . time()));
    } catch (MigratoryDataException $e) {
        echo($e->getDetail());
        echo($e->getCause());
    }
});

启动事件循环

$loop->run();

示例客户端应用程序

将以下代码复制到名为 echo-time-client.php 的文件中,并使用以下命令运行

php echo-time-client.php

PHP React 客户端 API 示例

客户端应用程序连接到部署在 localhost:8800 的迁徙数据服务器,订阅并每秒在主题 /server/status 上发布消息。

如果您没有在您的机器上安装迁徙数据服务器但已安装 docker,可以使用以下命令启动迁徙数据服务器;否则,您可以从中下载并安装适用于您的操作系统最新版本的此处

docker pull migratorydata/server:latest
docker run -d --name my_migratorydata -p 8800:8800 migratorydata/server:latest
<?php

require __DIR__ . '/vendor/autoload.php';

use MigratoryData\Client\MigratoryDataClient;
use MigratoryData\Client\MigratoryDataException;
use MigratoryData\Client\MigratoryDataMessage;
use MigratoryData\Client\MigratoryDataListener;

class MyListener implements MigratoryDataListener
{
    public function onMessage($message)
    {
        echo "Got message: " . $message . "\n";
    }

    public function onStatus($status, $info)
    {
        echo "Got status: " . $status . " - " . $info . "\n";
    }
}

$loop = \React\EventLoop\Factory::create();

$client = new MigratoryDataClient();
$client->setEntitlementToken("some-token");
$client->setLoop($loop);
$client->setListener(new MyListener());

try {
    $client->setServers(array("http://127.0.0.1:8800"));
} catch (MigratoryDataException $e) {
    echo($e->getDetail());
    exit(1);
}

$client->subscribe(array("/server/status"));

$client->connect();

$loop->addPeriodicTimer(1, function () use ($client) {
    try {
        $client->publish(new MigratoryDataMessage("/server/status", "Msg " . time(), "closure-" . time()));
    } catch (MigratoryDataException $e) {
        echo($e->getDetail());
        echo($e->getCause());
    }
});


$loop->run();