服务的实现依赖 Protobuf SDK,查看 SDK 生成器
composer create-project carno-php/skel-rpcd my-service
测试时可以使用 demo SDK
carno-php/protoc-hello
执行
composer require your/sdk
在 src/Services
目录下实现 SDK 中约定的 Contracts
例如:Hello.php
namespace App\Services;
use Carno\RPC\Server;
use Carno\Tests\Hello\Payload;
class Hello extends Server implements \Carno\Tests\Hello\Contracts\Hello
{
/**
* @param Payload $request
* @return Payload
*/
public function world(Payload $request)
{
return $request;
}
}
在 APP
根目录下的 registers.php
里添加
return [
\App\Services\Hello::class,
];
先进入到 my-service
目录,然后执行
./vendor/bin/rpcd server:start --listen=:8080 --debug
通过 curl 测试
curl -v -d '{"data":"hello world"}' -H 'Content-type: application/json' http://127.0.0.1:8080/invoke/hello/world