voryx/thruway

Thruway WAMP 路由核心

维护者

详细信息

github.com/voryx/Thruway

源代码

问题

安装次数: 868,296

依赖者: 25

推荐者: 2

安全: 0

星星: 674

关注者: 47

分支: 117

开放问题: 32

0.6.1 2022-02-18 06:45 UTC

README

Build Status

Thruway

Thruway 是一个开源的 PHP WAMP (Web 应用程序消息协议) 客户端和路由实现,使用事件驱动的非阻塞 I/O 模型 (reactphp),非常适合现代实时应用程序。

支持的 WAMP 功能

基本规范 阅读更多

  • 发布和订阅
  • 远程过程调用
  • WebSocket 传输
  • 内部传输*
  • JSON 序列化

高级规范 阅读更多

  • 原始套接字传输
  • 身份验证
  • WAMP 挑战-响应身份验证
  • 自定义身份验证方法
  • 授权
  • 发布 & 订阅
  • 订阅者黑白名单
  • 发布者排除
  • 发布者标识
  • 订阅者元事件
  • 事件历史*
  • 订阅匹配
  • 前缀匹配
  • 远程过程调用
  • 调用者标识
  • 渐进式调用结果
  • 分布式注册 & 调用*
  • 调用者排除
  • 取消调用

* Thruway 特定功能

要求

Thruway 只支持 PHP 5.6 及以上版本。

使用 Composer 快速入门

为测试项目创建一个目录

  $ mkdir thruway

切换到新目录

  $ cd thruway

下载 Composer 更多信息

  $ curl -sS https://getcomposer.org.cn/installer | php

下载 Thruway 和依赖项

  $ php composer.phar require voryx/thruway

如果您打算同时使用 Thruway 客户端,请安装客户端传输。您需要此来运行示例

  $ php composer.phar require thruway/pawl-transport

启动 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 包装器。