teamones / phpcent
PHP library to communicate with Centrifugo HTTP API(use workerman support async request)
Requires
- php: >=5.4.0
- ext-curl: *
- ext-json: *
- workerman/http-client: ^0.1.7
Requires (Dev)
- phpunit/phpunit: 5.*
This package is auto-updated.
Last update: 2025-03-01 00:48:39 UTC
README
PHP library to communicate with Centrifugo v2 HTTP API.
Library is published on the Composer: https://packagist.org/packages/centrifugal/phpcent
composer require centrifugal/phpcent:~3.0
Basic Usage:
$client = new \phpcent\Client("http://localhost:8000/api"); $client->setApiKey("Centrifugo API key"); $client->publish("channel", ["message" => "Hello World"]);
You can use phpcent
to create connection token (JWT):
$token = $client->setSecret("Centrifugo secret key")->generateConnectionToken($userId);
Connection token that will be valid for 5 minutes:
$token = $client->setSecret("Centrifugo secret key")->generateConnectionToken($userId, time() + 5*60);
It's also possible to generate private channel subscription token:
$token = $client->setSecret("Centrifugo secret key")->generatePrivateChannelToken($client, $channel);
Also API key and secret can be set in constructor:
$client = new \phpcent\Client("http://localhost:8000/api", "Centrifugo API key", "Centrifugo secret key");
Timeouts:
$client->setConnectTimeoutOption(0); // Seconds | 0 = never $client->setTimeoutOption(2); // Seconds
All available API methods:
$response = $client->publish($channel, $data); $response = $client->broadcast($channels, $data); $response = $client->unsubscribe($channel, $userId); $response = $client->disconnect($userId); $response = $client->presence($channel); $response = $client->presenceStats($channel); $response = $client->history($channel); $response = $client->historyRemove($channel); $response = $client->channels(); $response = $client->info();
To use assoc
option while decoding JSON in response:
$client->setUseAssoc(true);
SSL
In case if your Centrifugo server has invalid SSL certificate, you can use:
$client->setSafety(false);
You can also use self signed certificate in safe manner:
$client = new \phpcent\Client("https://localhost:8000/api"); $client->setCert("/path/to/certificate.pem"); $client->setCAPath("/ca/path"); // if you need.
Note: Certificate must match with host name in Client
address (localhost
in example above).
DNS Resolution
This error may indicate your system is having trouble resolving IPv6 addresses:
cURL error: Resolving timed out after [value] milliseconds
By default, both IPv4 and IPv6 addresses will attempt to be resolved. You can force it to only resolve IPv4 addresses with:
$client->forceIpResolveV4();
Testing
Requirements:
The provided PHPUnit tests assume that a local Centrifugo server is running and available at port 8000. This can be accomplished using Docker and the official Centrifugo image.
# Install package dependencies. $ composer install # The following command starts a Centrifugo server running in a background Docker container. $ docker run -d -p 8000:8000 --name centrifugo centrifugo/centrifugo centrifugo --api_insecure # Run the test suite. $ vendor/bin/phpunit # Shut down the Centrifugo container. $ docker stop centrifugo