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.

About

PHP client for Gockets

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages