rx / thruway-client
RxPHP WAMP 客户端
3.3.7
2022-03-06 03:37 UTC
Requires
- php: >=7.1
- reactivex/rxphp: ^2.0.4
- rx/websocket: ^2.1.7
- voryx/thruway-common: ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
本项目是一个使用 PHP 编写的 WAMP v2 客户端,它使用 RxPHP Observables 代替承诺和事件发射器。
如果您不知道 WAMP 是什么,您应该了解一下。
如果您不知道 RxPHP 或 ReactiveExtensions 是什么,您可能错过了一些东西...
安装
composer require rx/thruway-client
使用
use Rx\Observable; use Rx\Thruway\Client; require __DIR__ . '/vendor/autoload.php'; $wamp = new Client('ws://127.0.0.1:9090', 'realm1');
调用
$wamp->call('add.rpc', [1, 2]) ->map(function (Thruway\Message\ResultMessage $r) { return $r->getArguments()[0]; }) ->subscribe(function ($r) { echo $r; });
注册
$wamp->register('add.rpc', function ($a, $b) { return $a + $b; })->subscribe();
如果注册处理程序抛出异常,则返回
thruway.error.invocation_exception
给调用者。如果您希望允许更具体的错误消息,则必须抛出WampErrorException
,或者如果您正在使用返回自 RPC 的可观察序列,您可以在onError
中抛出WampErrorException
。
发布到主题
$wamp->publish('example.topic', 'some value'); $wamp->publish('example.topic', Observable::interval(1000)); // you can also publish an observable
订阅主题
$wamp->topic('example.topic') ->map(function(Thruway\Message\EventMessage $m) { return $m->getArguments()[0]; }) ->subscribe(function ($v) { echo $v; });