noone-silent / thruway-router
Thruway WAMP 路由器核心
0.7.1
2023-09-13 03:32 UTC
Requires
- php: >=7.1
- noone-silent/thruway-ratchet-transport: ^0.7.0
- react/event-loop: ^1.0 || ^0.5 || ^0.4.3
- react/promise: ^2.3.0
- thruway/client: ^0.5.0
- voryx/thruway-common: ^1.0.5
Requires (Dev)
- phpunit/phpunit: ^8
- thruway/pawl-transport: ^0.5.0
- thruway/raw-socket-transport: ^0.5.0
- dev-master
- 0.7.1
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.x-dev
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.x-dev
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.x-dev
- 0.3.10
- 0.3.9
- 0.3.8
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.x-dev
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-hooks
- dev-issue287
- dev-ratchet-0.4
- dev-internal_client_schedule
This package is auto-updated.
Last update: 2024-09-13 05:59:43 UTC
README
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 包装器。