skitlabs / bayeux-client
Installs: 1 271
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 1
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-11-22 11:43:44 UTC
README
This package provides a limited Bayeux client. Subscribe to any number of channels, wait for messages, dispatch a callback, rinse and repeat.
Installation
This package is installed through composer;
$ composer install skitlabs/bayeux-client
Requirements
- PHP 8.1
- Compatible HTTP-client (
guzzlehttp/guzzle: ^7.4
orilluminate/http: ^9.8
)
Usage
- Create a client by setting up a (HTTP) transport, and an Authentication provider.
- Subscribe to any number of channels
- Call start, and wait for the messages to roll in
<?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();
Logging
If you want to log all out- and incoming messages, wrap the Transport
in the included 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
Using Laravel, and don't want to depend on Guzzle directly?
Simply replace \Skitlabs\Bayeux\Transport\TransportGuzzle
with \Skitlabs\Bayeux\Transport\TransportLaravelHttp
and \Skitlabs\Bayeux\Authentication\AuthenticationOAuthTokenGuzzle
with \Skitlabs\Bayeux\Authentication\AuthenticationOAuthTokenLaravelHttp
.
Blocking
Note that, once start has been called, the script will continuously loop; until disconnected by the remote server. This means that the entire process is waiting for messages, and further execution is halted.
It is strongly recommended running
start
in a separate thread.
Resuming after disconnects
Once a disconnect occurs, script execution will continue beyond start
. This client will never attempt to reconnect.
If you wish to automatically restart after a disconnect, consider setting up a watchman/supervisord process.