deepstreamcentral/deepstream.io-client-curl-php

deepstreamCentral的PHP客户端

dev-master 2020-03-03 09:39 UTC

README

使用dsh HTTP API的PHP客户端

安装与运行测试

运行测试稍微复杂一些,因为它需要一个由两个节点组成的deepstream集群,包括一个Websocket deepstream,该节点提供测试服务并处理RPC调用和事件监听,以及一个HTTP deepstream,实际的测试将在其上运行

Diagram

  • 安装PHP - 您可以从例如http://windows.php.net/download/(针对Windows)获取
  • 将包含可执行文件的文件夹(例如php.exe,php-cli.exe)添加到您的路径中
  • https://phpunit.de/下载PHP Unit
  • phpunit-6.2.1.phar文件移动到您的deepstream.io-client-php文件夹
  • 通过以下命令使其可执行
chmod +x phpunit.phar
  • 下载本地版本的Redis并在默认端口上运行它
  • 下载最新的deepstream版本并将其解压
  • 在其lib目录中运行git clone git@github.com:deepstreamIO/dsx-connection-http.git
  • 通过yarn install安装插件
  • ds-conf中的配置文件复制到您的deepstream的conf目录
  • 使用./deepstream.exe install msg redis安装redis msg连接器
  • 使用以下命令启动两个deepstream实例
./deepstream.exe start -c conf/config-http.yml

./deepstream.exe start -c conf/config-ws.yml
  • deepstream.io-client-php中安装测试提供者
cd test-provider
yarn install
  • 运行测试提供者
node test-provider.js
  • 使用以下命令运行测试
php phpunit-6.2.1.phar --bootstrap src\DeepstreamClient.php test\client-test.php

如果一切顺利,它看起来像这样Screenshot

API

new DeepstreamClient( $url, $authData )

创建deepstream客户端

$client = new DeepstreamClient(
  'https://api.deepstreamcentral.com/api/v1',
  array(
    'token' => 'xxxx-xxxx-xxxx-xxxx'
  )
);

setRecord( $recordName, [$path], $data )

将完整或部分数据写入记录

# Writing full data
$client->setRecord('user/johndoe', array(
  'firstname' => 'John',
  'lastname' => 'Doe',
  'age' => 32,
  'pets' => array('hamster', 'cat')
));

# Writing partial data
$client->setRecord('user/johndoe', 'age', '33');

$client->getRecord( $recordName )

读取给定记录的数据

$firstname = $client->getRecord('user/johndoe')->firstname;

$client->deleteRecord( $recordName )

删除记录

$client->deleteRecord('user/johndoe');

$client->getRecordVersion( $recordName )

检索记录的当前版本

$version = $client->getRecordVersion('user/johndoe');

$client->makeRpc( $rpcName, [$data] )

执行远程过程调用

#with data
$twentyfour = $client->makeRpc('multiply-by-two', 12);

#without data
$client->makeRpc('logout');

$client->emitEvent( $eventName, [$data] )

触发事件

#with data
$client->emitEvent('new-message', 'hey, what\'s up?');

#without data
$client->emitEvent('ping');

$client->startBatch()

开始一组将作为单个请求执行的批处理操作

$client->executeBatch()

执行现有的批处理操作集

    $client->startBatch()
    $client->emitEvent( 'new-message', 'hey, what\'s up?' );
    $client->getRecord( 'user/johndoe' );
    $client->setRecord( 'user/mike', 'age', 12 );
    $client->executeBatch();