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.
