ably/ably-php

Ably PHP REST 客户端库。

1.1.10 2024-03-22 09:17 UTC

README

Features

Latest Stable Version Total Downloads License

Ably 是一个平台,用于在实时环境中驱动同步数字体验。无论是参加虚拟场所的活动,接收实时财务信息,还是监控实时汽车性能数据,消费者都期望标准化的实时数字体验。Ably 提供一系列 API,用于构建、扩展和交付实时强大的数字体验,这些体验每月为全球 80 个国家的超过 2.5 亿台设备提供支持。像彭博社、HubSpot、Verizon 和 Hopin 这样的组织都依赖 Ably 的平台来减轻全球范围内业务关键型实时数据同步的日益增长复杂性。有关更多信息,请参阅 Ably 文档

这是一个 Ably 的 PHP REST 客户端库。该库目前针对的是 Ably 1.1 客户端库规范。您可以跳转到 '已知限制' 部分,以查看此客户端库尚未支持的功能,或查看我们的客户端库 SDK 功能支持矩阵,以查看所有可用功能的列表。

支持的平台

此 SDK 支持 PHP >=7.2

我们对一系列 PHP 版本(这些版本将随着时间的推移而变化,但通常包括上游支持的所有版本)进行回归测试。请参阅 检查工作流程,了解目前正在进行 CI 测试的版本集。

我们将愉快地支持(并调查报告的问题)任何合理广泛使用的 PHP 版本。如果您发现任何兼容性问题,请在此存储库中提出问题联系 Ably 客户支持寻求建议。

已知限制

目前,此 SDK 仅支持 Ably REST。但是,您可以使用 MQTT 适配器,使用 Mosquitto PHP 实现使用 Ably 的实时功能

文档

请访问 https://www.ably.com/docs 了解完整的 API 参考和更多示例。

安装

通过 composer

客户端库作为 packagist 上的 composer 包 提供。如果您尚未安装 composer,可以从 https://getcomposer.org.cn/ 获取。

使用以下命令从 shell 中安装 Ably

$ composer require ably/ably-php --update-no-dev

然后简单地需要 composer 的自动加载器

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

手动安装

从本存储库克隆或下载 Ably 并需要 ably-loader.php

require_once __DIR__ . '/ably-php/ably-loader.php';

使用 REST API

简介

所有示例都假设已创建以下客户端和/或频道

$client = new Ably\AblyRest('your.appkey:xxxxxx');
$channel = $client->channel('test');

向频道发布消息

$channel->publish('myEvent', 'Hello!'); // => true

查询历史记录

$messagesPage = $channel->history(); // => \Ably\Models\PaginatedResult
$messagesPage->items[0]; // => \Ably\Models\Message
$messagesPage->items[0]->data; // payload for the message
$messagesPage->next(); // retrieves the next page => \Ably\Models\PaginatedResult
$messagesPage->hasNext(); // false, there are no more pages

在频道上的存在

$membersPage = $channel->presence->get(); // => \Ably\Models\PaginatedResult
$membersPage->items[0]; // first member present in this page => \Ably\Models\PresenceMessage
$membersPage->items[0]->clientId; // client ID of first member present
$membersPage->next(); // retrieves the next page => \Ably\Models\PaginatedResult
$membersPage->hasNext(); // false, there are no more pages

查询存在历史记录

$presencePage = $channel->presence->history(); // => \Ably\Models\PaginatedResult
$presencePage->items[0]; // => \Ably\Models\PresenceMessage
$presencePage->items[0]->clientId; // client ID of first member
$presencePage->next(); // retrieves the next page => \Ably\Models\PaginatedResult

获取频道状态

$channelStatus = $channel->status(); // => \Ably\Models\Status\ChannelDetails
var_dump($channelStatus); 

生成令牌和令牌请求

$tokenDetails = $client->auth->requestToken();
// => \Ably\Models\PresenceMessage
$tokenDetails->token; // => "xVLyHw.CLchevH3hF....MDh9ZC_Q"

$client = new Ably\AblyRest( $tokenDetails->token );
// or
$client = new Ably\AblyRest( array( 'tokenDetails' => $tokenDetails ) );

$token = $client->auth->createTokenRequest();
// => {"id" => ...,
//     "clientId" => null,
//     "ttl" => 3600,
//     "timestamp" => ...,
//     "capability" => "{\"*\":[\"*\"]}",
//     "nonce" => ...,
//     "mac" => ...}

获取您应用程序的统计数据

$statsPage = client->stats(); // => \Ably\Models\PaginatedResult
$statsPage->items[0]; // => \Ably\Models\Stats
$statsPage->next(); // retrieves the next page => \Ably\Models\PaginatedResult

获取Ably服务时间

$client->time(); // in milliseconds => 1430313364993

Laravel实时广播

如果您正在使用Laravel并且想要支持 实时广播和事件,您可能想查看 laravel-broadcaster

如果想在服务提供者之间作为REST依赖项使用 ably-php,请查看 ably-php-laravelably-php-laravel 是一个简单的包装器,覆盖了 ably-php,并包含特定的Laravel类。这具有有限的使用场景,对于大多数使用场景,建议使用 laravel-broadcaster 而不是 ably-php-laravel

向Ably REST端点/批量发布显式HTTP请求

  • 可以使用 AblyRest->Request 方法向 Ably REST API 发送显式的HTTP请求。
  • 它自动添加必要的认证头,并根据初始认证配置支持分页。
  • 以下是基于 Ably批量发布REST端点文档 的批量发布API的示例。
    // batch publish needs php array to be passed and serialization is handled based on useBinaryProtocol
    $payload = array(
        "channels" => ["channel1", "channel2", "channel3", "channel4"],
        "messages" => array(
            "id" => "1",
            "data" => "foo"
        )
    ); 
    $batchPublishPaginatedResult = $client->request("POST", "/messages", [], $payload);

支持、反馈和故障排除

请访问 http://support.ably.com/ 以获取我们的知识库并寻求任何帮助。

您还可以查看 社区报告的Github问题

要查看Bundler最近版本的变化,请参阅 CHANGELOG

已知限制

  1. 此客户端库需要PHP版本5.4或更高版本

运行测试

客户端库使用Ably沙盒环境来部署应用程序并针对该应用程序运行测试。为了运行测试,您需要

git clone https://github.com/ably/ably-php.git
cd ably-php
composer install
git submodule init
git submodule update
./vendor/bin/phpunit

注意 - 如果在运行测试时出现问题[SSL证书错误:无法获取本地发行者证书],请在 php.ini 中设置SSL证书路径。有关更多信息,请参阅 https://aboutssl.org/fix-ssl-certificate-problem-unable-to-get-local-issuer-certificate/

贡献

  1. 分支它
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 提交您的更改(git commit -am 'Add some feature'
  4. 确保您已添加适当的测试,并且测试套件正在通过(运行 vendor/bin/phpunit
  5. 推送到分支(git push origin my-new-feature
  6. 创建一个新的拉取请求

发布流程

此库使用 语义版本控制。对于每个发布,需要执行以下操作

  1. 更新 src/Defaults.php 中的版本号
  2. 为发布创建一个新的分支,名称为 release/1.0.0(其中 1.0.0 是您要发布的版本,即新版本)。
  3. 运行 github_changelog_generator来自动更新CHANGELOG.md。这可能需要一些手动干预,包括如何运行命令以及如何修改变更日志文件。您的效果可能会有所不同。
  • 您需要运行的命令可能看起来像这样:github_changelog_generator -u ably -p ably-php --since-tag 1.1.9 --output delta.md --token $GITHUB_TOKEN_WITH_REPO_ACCESS。在此处生成令牌:这里
  • 使用上述命令,--output delta.md会将自--since-tag以来的更改写入新文件。
  • 然后将该新文件(delta.md)的内容手动插入到CHANGELOG.md的顶部,更改“未发布”标题并与当前版本号建立链接。
  • 同时确保“完整变更日志”链接指向新版本标签而不是HEAD
  1. 提交生成的CHANGELOG.md文件。
  2. main创建一个PR。
  3. 一旦PR被批准,将其合并到main
  4. 添加标签并将它们推送到origin,例如git tag 1.0.0 && git push origin 1.0.0
  5. 访问https://github.com/ably/ably-php/tags并为发布添加发布说明,包括指向变更日志条目的链接。
  6. 访问https://packagist.org.cn/packages/ably/ably-php,登录Packagist并点击“更新”按钮。
  7. 记得为laravel-broadcasterably-php-laravel制作发布更新。