funeralzone/msg-pack-php

此包的最新版本(dev-master)没有可用的许可信息。

此包试图利用 Message Pack 和 msgpack.php 的强大功能。主要使用 https://github.com/msgpack-rpc/msgpack-rpc-php 并更新底层代码及升级到上面提到的 msgpack.php 包。

安装: 16

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:项目

dev-master 2018-08-14 08:56 UTC

This package is auto-updated.

Last update: 2024-08-29 04:54:25 UTC


README

此包试图利用 Message Packmsgpack.php

主要使用 https://github.com/msgpack-rpc/msgpack-rpc-php 并更新底层代码及升级到上面提到的 msgpack.php 包。

由于具有服务器和客户端视角,此存储库有 3 种可能的用途

  1. 客户端(我的主要用途)
$client = new Client('localhost', '1985');

$messages =  $client->call("SyncJob", $job, $payload);

echo array_pop($messages);

除了客户端类的明显 hostport 参数外,让我们看看 call 函数的参数

  • 第一个参数是一个字符串,命名了要在服务器端调用的函数(见 tests/server.php
  • call 方法是一个可变参数函数,因此以下参数在服务器端连接成一个数组
  1. 服务器(未彻底测试)
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

  1. 客户端和服务器

如果你使用多个服务或需要双向通信,这将是一个很好的用例

*如果需要在同一两个服务之间使用,可能最好考虑切换到 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,以便在不修改基础类的情况下(主要用作参考而非实现,因为它们只为最基本的使用案例)进行自己的服务器或客户端增强。