Gockets is daemon written in Golang to give languages, like PHP a middleware for REST-oriented communication with Websockets.
This library provides implemented and ready to use interface for gockets daemon.
composer require gockets-project/gockets-php
use Gockets\Client;
use Gockets\Model\Params;
$host = 'localhost'; // Default value
$port = '8844'; // Default value
$client = new Client(new Params($host, $port));
Creates new channel. Can accept optional argument instance of Gockets\Model\ChannelOptions
.
use Gockets\Model\ChannelOptions;
$options = new ChannelOptions('http://localhost/hook.php', 'tag');
// Using $client from previous sample
$channel = $client->prepare($options);
Gockets\Model\Сhannel
example:
object(Gockets\Model\Channel) {
["publisherToken":private] => string(32) "f177965656399535ea241a3da40dfcbf"
["subscriberToken":private] => string(32) "90b09a2e2d43c83ed907854a46c710fd"
["hookUrl":private] => string(25) "http://localhost/hook.php"
["tag":private] => string(3) "tag"
["listeners":private] => int(0)
}
Returns specific channel.
$publisherToken = '95e9aca9575c29ca8cdc92e54767d783';
$channel = $client->show($publisherToken);
Returns empty or filled with Gockets\Model\Сhannel
objects array.
$channels = $client->showAll();
Use to modify specific channel attributes (change hook url or tag).
use Gockets\Model\ChannelOptions;
$options = new ChannelOptions('http://localhost/new_hook.php', 'someApplication|tagged');
$updatedChannel = $client->update($channel->getPublisherToken(), $options);
Send some data to channel.
In this example $channel
variable contains Gockets\Model\Сhannel
object.
$data = [
'data' => 'content',
];
$response = $client->publish($data, $channel->getPublisherToken());
Gockets\Model\Response $response
example:
object(Gockets\Model\Response) {
["success":private] => bool(true)
["type":private] => string(3) "INF"
["message":private] => string(38) "Successfully pushed data to subscriber"
}
Always try to ensure that $success
property of response is true
.
Closes connection and removes channel.
$response = $client->close($channel->getPublisherToken());
echo $response->getMessage(); // Outputs "Successfully closed connection"
Mostly error handling currently in development, but in case if publisher token was not found library throws Gockets\Exception\ChannelNotFoundException
.
use Gockets\Exception\ChannelNotFoundException;
try {
$client->show('some-publisher-token');
} catch (ChannelNotFoundException $exception) {
// Your logic when publisher token was not found
}
In bin
directory located Gockets builded instance for Linux. For more information about Golang project refer to it's page.