# RPC 框架为开发者提供了RPC服务。 [TOC] >RPC与TcpClientPool不同,RPC并没有连接池,是采用单个连接进行通讯的,比TcpClientPool更加省连接,但是需要更完善的规范,目前RPC只适用于SD服务器之间的通讯。 ## 添加连接池 ```php $this->addAsynPool('RPC',new SdTcpRpcPool($this->config,'test',"192.168.0.1:9093")); ``` ## 使用方法 用法和TcpClientPool类似但是为了方便增加了个帮助函数。 ```php function helpToBuildSDControllerQuest($context, $controllerName, $method) ``` 其中$context就是Controller,Model中的context。通过helpToBuildSDControllerQuest获取构建后的data,再通过coroutineSend发出请求,可以加上oneway标示表明这是一个单向请求。 ``` public function http_tcp() { $this->sdrpc = get_instance()->getAsynPool('RPC'); $data = $this->sdrpc->helpToBuildSDControllerQuest($this->context, 'MathService', 'add'); $data['params'] = [1, 2]; $result = $this->sdrpc->coroutineSend($data); $this->http_output->end($result); } ``` ## 原理 SdTcpRpcPool使用的是单个连接进行RPC操作,每次请求都会携带一个token字段,发送的token和接收token是保持一致的,token会自增加。