funeralzone / msg-pack-php
此包的最新版本(dev-master)没有可用的许可信息。
此包试图利用 Message Pack 和 msgpack.php 的强大功能。主要使用 https://github.com/msgpack-rpc/msgpack-rpc-php 并更新底层代码及升级到上面提到的 msgpack.php 包。
dev-master
2018-08-14 08:56 UTC
Requires
- php: >=7.1
- rybakit/msgpack: ^0.2.2
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-08-29 04:54:25 UTC
README
此包试图利用 Message Pack 和 msgpack.php
主要使用 https://github.com/msgpack-rpc/msgpack-rpc-php 并更新底层代码及升级到上面提到的 msgpack.php 包。
由于具有服务器和客户端视角,此存储库有 3 种可能的用途
- 客户端(我的主要用途)
$client = new Client('localhost', '1985'); $messages = $client->call("SyncJob", $job, $payload); echo array_pop($messages);
除了客户端类的明显 host
和 port
参数外,让我们看看 call 函数的参数
- 第一个参数是一个字符串,命名了要在服务器端调用的函数(见
tests/server.php
) - call 方法是一个可变参数函数,因此以下参数在服务器端连接成一个数组
- 服务器(未彻底测试)
try { $server = new Server('1985', new App()); echo 'Server is listening on port 1985...'; $server->recv(); } catch (Exception $e) { echo $e->getMessage(); }
完整示例见 tests/server.php
- 客户端和服务器
如果你使用多个服务或需要双向通信,这将是一个很好的用例
*如果需要在同一两个服务之间使用,可能最好考虑切换到 http/2,其中
$backChannel = new BackChannel(); $client = new Client('localhost', '1986', $backChannel); $messages = $client->call("SyncJob", $job, $payload); echo array_pop($messages); try { $server = new Server('1985', new App(), $backChannel); echo 'Server is listening on port 1985...'; $server->recv(); } catch (Exception $e) { echo $e->getMessage(); }
是的,在这种情况下,就像原始包一样,使用 BackChannel 结合是有意义的
其他选项
该包提供必要的接口和 Traits,以便在不修改基础类的情况下(主要用作参考而非实现,因为它们只为最基本的使用案例)进行自己的服务器或客户端增强。