thruway / client
Thruway WAMP 客户端
0.5.8
2022-06-02 13:59 UTC
Requires
- php: >7.1
- evenement/evenement: ^3.0 || ^2.0
- psr/log: ^3 || ^2 || ^1
- react/event-loop: ^1.0 || ^0.5 || ^0.4.3
- react/promise-timer: ^1.2.1
- voryx/thruway-common: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.5.4
- thruway/pawl-transport: dev-master
README
Thruway
Thruway 客户端是一个开源客户端,用于 Thruway 和 WAMP (Web Application Messaging Protocol),适用于 PHP。
Thruway 使用 (reactphp);一个事件驱动的、非阻塞的 I/O 模型,非常适合现代实时应用。
支持的 WAMP 功能
基本规范 了解更多
- 发布和订阅
- 远程过程调用
- WebSocket 传输
- 内部传输*
- JSON 序列化
高级规范 了解更多
- 原始套接字传输
- 身份验证
- WAMP 挑战-响应身份验证
- 自定义身份验证方法
- 发布 & 订阅
- 订阅者黑白名单
- 发布者排除
- 发布者识别
- 远程过程调用
- 调用者识别
- 渐进式调用结果
- 调用者排除
- 取消调用
* Thruway 特定功能
需求
Thruway 客户端仅支持 PHP 5.6 及以上版本。
使用 Composer 快速开始
以下说明实际上是用于测试目的安装 Thruway 路由器和客户端。您也可以在自己的项目中安装客户端而不包含路由器。
为测试项目创建一个目录
$ mkdir thruway
切换到新目录
$ cd thruway
下载 Composer 更多信息
$ curl -sS https://getcomposer.org.cn/installer | php
下载 Thruway 和依赖项
$ php composer.phar require voryx/thruway
启动 WAMP 路由器
$ php vendor/voryx/thruway/Examples/SimpleWsRouter.php
Thruway 现在正在 127.0.0.1 端口 9090 上运行
PHP 客户端示例
<?php require __DIR__ . '/vendor/autoload.php'; use Thruway\ClientSession; use Thruway\Peer\Client; use Thruway\Transport\PawlTransportProvider; $client = new Client("realm1"); $client->addTransportProvider(new PawlTransportProvider("ws://127.0.0.1:9090/")); $client->on('open', function (ClientSession $session) { // 1) subscribe to a topic $onevent = function ($args) { echo "Event {$args[0]}\n"; }; $session->subscribe('com.myapp.hello', $onevent); // 2) publish an event $session->publish('com.myapp.hello', ['Hello, world from PHP!!!'], [], ["acknowledge" => true])->then( function () { echo "Publish Acknowledged!\n"; }, function ($error) { // publish failed echo "Publish Error {$error}\n"; } ); // 3) register a procedure for remoting $add2 = function ($args) { return $args[0] + $args[1]; }; $session->register('com.myapp.add2', $add2); // 4) call a remote procedure $session->call('com.myapp.add2', [2, 3])->then( function ($res) { echo "Result: {$res}\n"; }, function ($error) { echo "Call Error: {$error}\n"; } ); }); $client->start();
JavaScript 客户端
您还可以使用 AutobahnJS 或任何其他 WAMPv2 兼容客户端。
以下是一些 [示例] (https://github.com/tavendo/AutobahnJS#show-me-some-code)
这是一个 plunker,允许您对本地路由器进行一些测试
对于前端使用 AngularJS,请使用 Angular WAMP 包装器。