安裝 composer require easyswoole/rpc=5.x
...
客戶端
文檔上沒有寫這個
$serviceNode = new \EasySwoole\Rpc\Server\ServiceNode();
$serviceNode->setIp('你的IP');
$serviceNode->setPort('10001');
$ctx1->setServiceNode($serviceNode);
...
$config = new \EasySwoole\Rpc\Config();
$rpc = new \EasySwoole\Rpc\Rpc($config);
$ret = [];
$client = $rpc->client();
// client 全局參數(shù)
$client->setClientArg([1,2,3]);
/**
* 調(diào)用商品列表
*/
$ctx1 = $client->addRequest('BaseAdmin.AdminModule.list');
// 設(shè)置請求參數(shù)
$ctx1->setArg(['a','b','c']);
$serviceNode = new \EasySwoole\Rpc\Server\ServiceNode();
$serviceNode->setIp('你的IP');
$serviceNode->setPort('端口');
$ctx1->setServiceNode($serviceNode);
//設(shè)置調(diào)用成功執(zhí)行回調(diào)
$ctx1->setOnSuccess(function (Response $response) use (&$ret) {
var_dump( $response->getMsg());
var_dump( $response->getResult());
$ret[] = [
'list' => [
'msg' => $response->getMsg(),
'result' => $response->getResult()
]
];
})->setOnFail(function (Response $response){
var_dump('錯誤');
var_dump( $response);
var_dump( $response->getResult());
});
// 執(zhí)行調(diào)用
$client->exec();
$this->writeJson(200, $ret);
服務(wù)端和文檔一樣的寫就好
protected static function rpcServices() {
###### 注冊 rpc 服務(wù) ######
/** rpc 服務(wù)端配置 */
$config = new \EasySwoole\Rpc\Config();
$config->setOnException(function (\Throwable $throwable) {
var_dump($throwable);
});
$serverConfig = $config->getServer();
// 單機(jī)部署內(nèi)部調(diào)用時可指定為 127.0.0.1
// 分布式部署時多臺調(diào)用時請?zhí)?0.0.0.0
$serverConfig->setServerIp('127.0.0.1');
// 設(shè)置監(jiān)聽地址及端口
$serverConfig->setListenAddress('0.0.0.0');
$serverConfig->setListenPort('9600');
/** @var \EasySwoole\Rpc\Config $config */
$assistConfig = $config->getAssist();
// 服務(wù)定時自刷新到節(jié)點(diǎn)管理器
$assistConfig->setAliveInterval(5000);
// 廣播進(jìn)程設(shè)置
$serviceFinderConfig = $assistConfig->getUdpServiceFinder();
// 監(jiān)聽地址和端口
$serviceFinderConfig->setEnableListen(true);
$serviceFinderConfig->setListenAddress('0.0.0.0');
$serviceFinderConfig->setListenPort(9600);
// 設(shè)置廣播地址
// $serviceFinderConfig->setEnableBroadcast(true);
// $serviceFinderConfig->setBroadcastAddress(['127.0.0.1:9600', '127.0.0.1:9601']);
// $serviceFinderConfig->setBroadcastInterval(5000); // 5s 廣播一次
// rpc 具體配置請看配置章節(jié)
$rpc = new \EasySwoole\Rpc\Rpc($config);
// 創(chuàng)建 服務(wù)
$baseAdminService = new \App\RpcService\BaseAdmin();
// 添加 Admin 模塊到 baseAdminService 服務(wù)中
$baseAdminService->addModule(new \App\RpcService\AdminModule());
// 添加 baseAdminService 服務(wù)到服務(wù)管理器中
$rpc->serviceManager()->addService($baseAdminService);
// 注冊 rpc 服務(wù)
$rpc->attachServer(ServerManager::getInstance()->getSwooleServer());
}