迁徙数据 / migratorydata-client-reactphp
React PHP 的迁徙数据客户端 API
6.0.7
2023-07-31 11:16 UTC
Requires
- php: >=7.0.0
- react/event-loop: 1.1.1
- react/socket: 1.4
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();