skitlabs/bayeux-client

dev-main 2022-06-22 06:28 UTC

This package is auto-updated.

Last update: 2024-09-22 11:17:59 UTC


README

此包提供了一个有限的 Bayeux 客户端。订阅任意数量的频道,等待消息,派发回调,重复。

安装

此包通过 composer 安装;

$  composer install skitlabs/bayeux-client

需求

  • PHP 8.1
  • 兼容 HTTP-client (guzzlehttp/guzzle: ^7.4illuminate/http: ^9.8)

使用方法

  1. 通过设置一个 (HTTP) 传输和认证提供者来创建客户端。
  2. 订阅任意数量的频道
  3. 调用 start 并等待消息到来
<?php declare(strict_types=1);

require_once './vendor/autoload.php';

$bayeux = new \Skitlabs\Bayeux\Client\Bayeux(
    new \Skitlabs\Bayeux\Transport\TransportGuzzle(
        'https://organization.my.salesforce.com/cometd/54.0/',
        new \Skitlabs\Bayeux\Authentication\AuthenticationOAuthTokenGuzzle(
            'https://organization.my.salesforce.com',
            'clientId',
            'clientSecret',
            'username',
            'password',
        ),
    ),
);

$bayeux->subscribe('/data/ChangeEvents', static function (array $message) : void {
    var_dump($message);
})->start();

日志记录

如果您想记录所有出入站消息,请将 Transport 包装在包含的 TransportLogging-decorator 中。

<?php declare(strict_types=1);

require_once './vendor/autoload.php';

/** @var \Skitlabs\Bayeux\Transport\Transport $transport */
/** @var \Psr\Log\LoggerInterface $logging */

\Skitlabs\Bayeux\Transport\Decorator\TransportLogging::decorate($transport, $logging)

Laravel

使用 Laravel,并不想直接依赖 Guzzle 吗?
只需将 \Skitlabs\Bayeux\Transport\TransportGuzzle 替换为 \Skitlabs\Bayeux\Transport\TransportLaravelHttp,将 \Skitlabs\Bayeux\Authentication\AuthenticationOAuthTokenGuzzle 替换为 \Skitlabs\Bayeux\Authentication\AuthenticationOAuthTokenLaravelHttp 即可。

阻塞

请注意,一旦调用 start,脚本将不断循环;直到被远程服务器断开连接。这意味着整个过程都在等待消息,并且进一步的执行被停止。

强烈建议在一个单独的线程中运行 start

断开连接后的恢复

一旦发生断开连接,脚本执行将超过 start。此客户端将永远不会尝试重新连接。
如果您希望在断开连接后自动重新启动,请考虑设置 watchman/supervisord 进程。