gockets-project/gockets-php

PHP 客户端用于 Gockets https://github.com/gockets-project/gockets

0.2.0 2019-05-14 21:30 UTC

README

Latest Stable Version Build Status Coverage Status Code Quality StyleCI

Gockets 是一个用 Golang 编写的守护进程,为像 PHP 这样的语言提供中间件,以便进行面向 Websocket 的 RESTful 通信。

Gockets PHP

此库为 gockets 守护进程提供已实现且可立即使用的接口。

通过 Composer 安装

composer require gockets-project/gockets-php

快速入门

设置 Gockets 服务器

Gockets 页面

设置 PHP 客户端

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

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

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

准备通道

创建新通道。可以接受一个可选的 Gockets\Model\ChannelOptions 实例参数。

use Gockets\Model\ChannelOptions;

$options = new ChannelOptions('https:///hook.php', 'tag');

// Using $client from previous sample

$channel = $client->prepare($options);

Gockets\Model\Channel 示例

object(Gockets\Model\Channel) {
  ["publisherToken":private] => string(32) "f177965656399535ea241a3da40dfcbf"
  ["subscriberToken":private] => string(32) "90b09a2e2d43c83ed907854a46c710fd"
  ["hookUrl":private] => string(25) "https:///hook.php"
  ["tag":private] => string(3) "tag"
  ["listeners":private] => int(0)
}

显示通道

返回特定通道。

$publisherToken = '95e9aca9575c29ca8cdc92e54767d783';

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

显示所有通道

返回空数组或填充有 Gockets\Model\Channel 对象的数组。

$channels = $client->showAll();

编辑通道

用于修改特定通道属性(更改钩子 URL 或标记)。

use Gockets\Model\ChannelOptions;

$options = new ChannelOptions('https:///new_hook.php', 'someApplication|tagged');

$updatedChannel = $client->update($channel->getPublisherToken(), $options);

发布数据

向通道发送一些数据。在此示例中,$channel 变量包含 Gockets\Model\Channel 对象。

$data = [
    'data' => 'content',
];

$response = $client->publish($data, $channel->getPublisherToken());

Gockets\Model\Response 示例

object(Gockets\Model\Response) {
  ["success":private] => bool(true)
  ["type":private] => string(3) "INF"
  ["message":private] => string(38) "Successfully pushed data to subscriber"
}

始终确保响应中的 $success 属性为 true

关闭通道

关闭连接并删除通道。

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

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

错误处理

目前大部分错误处理处于开发中,但如果发布者令牌未找到,库将抛出 Gockets\Exception\ChannelNotFoundException

use Gockets\Exception\ChannelNotFoundException;

try {
    $client->show('some-publisher-token');
} catch (ChannelNotFoundException $exception) {
    // Your logic when publisher token was not found
}

bin 目录中找到为 Linux 构建的 Gockets 实例。有关 Golang 项目的更多信息,请参阅 的页面。