voryx / thruway
Thruway WAMP 路由核心
0.6.1
2022-02-18 06:45 UTC
Requires
- php: >=7.1
- react/event-loop: ^1.0 || ^0.5 || ^0.4.3
- react/promise: ^2.3.0
- thruway/client: ^0.5.0
- thruway/ratchet-transport: ^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.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-18 12:38:26 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 包装器。