rx/thruway-client

RxPHP WAMP 客户端

3.3.7 2022-03-06 03:37 UTC

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; });