配置服务
// http 协议 rpc服务['port' => 8082,'action' => \App\Server\RpcHttpPort::class,'type' => SWOOLE_SOCK_TCP,'ip' => '0.0.0.0','set' => ['open_http_protocol' => true,'open_websocket_protocol' => false]],// tpc 协议 rpc服务['port' => 8083,'action' => \App\Server\RpcTcpPort::class,'type' => SWOOLE_SOCK_TCP,'pack_protocol' => \One\Protocol\Frame::class, // tcp 打包 解包协议'ip' => '0.0.0.0','set' => ['open_http_protocol' => false,'open_websocket_protocol' => false,'open_length_check' => 1,'package_length_func' => '\One\Protocol\Frame::length','package_body_offset' => \One\Protocol\Frame::HEAD_LEN,]]
添加服务
// 添加Abc到rpc服务RpcServer::add(Abc::class);// 如果你不希望把Abc下的所有方法都添加到rpc服务,也可以指定添加。// 未指定的方法客户端无法调用.//RpcServer::add(Abc::class,'add');// 分组添加//RpcServer::group([// // 中间件 在这里可以做 权限验证 数据加解密 等等// 'middle' => [// TestMiddle::class . '@aa'// ],// // 缓存 如果设置了 当以同样的参数调用时 会返回缓存信息 不会真正调用 单位:秒// 'cache' => 10//], function () {// RpcServer::add(Abc::class);// RpcServer::add(User::class);//});
客户端调用
// 映射类 one框架会自送生成 访问http服务 http://127.0.0.1:8082/ 下载class ClientAbc extends RpcClientHttp {// rpc服务器地址protected $_rpc_server = 'http://127.0.0.1:8082/';// 远程的类 不设置 默认为当前类名protected $_remote_class_name = 'Abc';}$abc = new ClientAbc(5);// $res === 10$res = $abc->add(2,3);// 链式调用 $res === 105$res = $abc->setA(100)->add(2,3);
如果是tcp请继承 RpcClientTcp 代码地址 RpcClientTcp , RpcClientHttp
如果在one框架内tcp调用 请继承 RpcTcp支持协程
