gockets-project / gockets-php
PHP 客户端用于 Gockets https://github.com/gockets-project/gockets
0.2.0
2019-05-14 21:30 UTC
Requires
- php: >=7.2
- ext-json: *
- guzzlehttp/guzzle: ^6.3
Requires (Dev)
- phpunit/phpunit: ^8.1
This package is auto-updated.
Last update: 2024-09-19 22:59:38 UTC
README
Gockets 是一个用 Golang 编写的守护进程,为像 PHP 这样的语言提供中间件,以便进行面向 Websocket 的 RESTful 通信。
Gockets PHP
此库为 gockets 守护进程提供已实现且可立即使用的接口。
通过 Composer 安装
composer require gockets-project/gockets-php
快速入门
设置 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 项目的更多信息,请参阅 它 的页面。