Skip to content

gockets-project/gockets-php

Repository files navigation

Gockets

Latest Stable Version Build Status Coverage Status Code Quality StyleCI

Gockets is daemon written in Golang to give languages, like PHP a middleware for REST-oriented communication with Websockets.

Gockets PHP

This library provides implemented and ready to use interface for gockets daemon.

Installation via Composer

composer require gockets-project/gockets-php

Quickstart

Setup Gockets server

Gockets page

Setup PHP client

use Gockets\Client;
use Gockets\Model\Params;

$host = 'localhost'; // Default value
$port = '8844'; // Default value

$client = new Client(new Params($host, $port));

Prepare channel

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)
}

Show channel

Returns specific channel.

$publisherToken = '95e9aca9575c29ca8cdc92e54767d783';

$channel = $client->show($publisherToken);

Show all channels

Returns empty or filled with Gockets\Model\Сhannel objects array.

$channels = $client->showAll();

Edit channel

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);

Publish data

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.

Close channel

Closes connection and removes channel.

$response = $client->close($channel->getPublisherToken());

echo $response->getMessage(); // Outputs "Successfully closed connection"

Error handling

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.