skitlabs / bayeux-client
dev-main
2022-06-22 06:28 UTC
Requires
- php: ^8.1
- psr/log: ^3.0
- ramsey/uuid: ^4.3
Requires (Dev)
- guzzlehttp/guzzle: ^7.4
- illuminate/http: ^9.8
- monolog/monolog: ^2.5
- symfony/var-dumper: ^6.0
Suggests
- guzzlehttp/guzzle: For use with Guzzle Transport / Auth
- illuminate/http: For use with Laravel HTTP Transport / Auth
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.4
或illuminate/http: ^9.8
)
使用方法
- 通过设置一个 (HTTP) 传输和认证提供者来创建客户端。
- 订阅任意数量的频道
- 调用 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 进程。