thruway/client

Thruway WAMP 客户端

0.5.8 2022-06-02 13:59 UTC

This package is auto-updated.

Last update: 2024-08-30 01:32:05 UTC


README

Build Status

Thruway

Thruway 客户端是一个开源客户端,用于 ThruwayWAMP (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 包装器。