關(guān)于 Laravel Hprose RPC 服務(wù)

下面由laravel教程欄目給大家介紹關(guān)于 laravel hprose rpc 服務(wù),希望對需要的朋友有所幫助!

Laravel Hprose RPC 服務(wù)

開源地址:https://github.com/flc1125/laravel-hprose

該項目支持 Laravel 及非 Laravel 項目使用,支持 ?php >= 5.3 版本語法

注: 以下內(nèi)容,默認(rèn)你對 Hprose 已經(jīng)有了一定了解。內(nèi)容基于 Laravel 項目介紹。

安裝

  • 環(huán)境依賴 C 擴展 hprose,詳見:Hprose 官網(wǎng)、Hprose Pecl 擴展

    服務(wù)端安裝即可,客戶端可不安裝

    pecl install hprose
  • 安裝擴展包

    composer require flc/laravel-hprose

配置

服務(wù)提供者與門面

Laravel >= 5.5 已增加包自動發(fā)現(xiàn)。舊版本,請手動設(shè)置

  • 在 config/app.php 文件下加入服務(wù)提供者

    'providers' => [      ...      FlcLaravelHproseHproseServiceProvider::class, ]
  • 在 config/app.php 文件下加入門面

    'aliases' => [      ...      'HproseRoute' => FlcLaravelHproseFacadesHproseRoute::class,     'HproseServer' => FlcLaravelHproseFacadesHproseServer::class,     'HproseClient' => FlcLaravelHproseFacadesHproseClient::class, ]

初始化文件

php artisan hprose:generator

執(zhí)行完成后,會分別生成以下文件:

  • 路由服務(wù)提供者:app/Providers/HproseRouteServiceProvider.php
  • 路由文件:routes/hprose.php (該路由文件非 Laravel 路由,下文簡稱 Hprose 路由)

    Hprose 路由控制器根目錄默認(rèn)在:app/Http/Controllers/Hprose 目錄下,可自行在 app/Providers/HproseRouteServiceProvider.php 調(diào)整

在 config/app.php 文件下加入默認(rèn)的 Hprose 路由服務(wù)提供者

'providers' => [      ...      appProvidersHproseRouteServiceProvider::class, ]

發(fā)布配置

php artisan vendor:publish --provider="FlcLaravelHproseHproseServiceProvider"

執(zhí)行后,會生成配置文件路徑:/config/hprose.php

使用

配置說明

配置文件路徑:/config/hprose.php

<?php  return [     'server' => [         'default'     => 'http',         'connections' => [             'http' => [                 'protocol' => 'http',             ],         ],     ],      'client' => [         'default'     => 'http',         'connections' => array(             'http' => array(                 'protocol' => 'http',                 'uri'      => 'http://192.168.2.67:9001/api/server',  // 此處為服務(wù)端的連接地址                 'async'    => false,             ),         ),     ] ];

目前版本,除客戶端配置中的遠(yuǎn)程服務(wù)器地址外,其他配置默認(rèn)即可

其他均為后續(xù)支持 swoole-http、tcp、websocket 等,做提前架設(shè)

服務(wù)端

增加一個 Laravel 路由,用于啟動 Http 服務(wù),如:

<?php  Route::any('hprose-server', 'HproseController@server');

對應(yīng)控制器:

<?php  namespace AppHttpControllers;  use HproseServer; use HproseRoute;  class HproseController {     public function server()     {         HproseServer::setRouter(HproseRoute::getRouter())->start();     } }

訪問:http://localhost/hprose-server

Hprose 路由配置

<?php  HproseRoute::add('tests', 'Controller@tests'); HproseRoute::add('tests_one', 'Controller@tests')->option(['...']);

Controller@tests 的方法自行定義

客戶端

<?php  namespace AppHttpControllers;  use HproseClient;  class HproseController {     public function client()     {         $result = HproseClient::tests('tests');         $result = HproseClient::connection('other')->tests('tests');  // 其他連接         $result = HproseClient::connection()->tests->one('tests');          print_r($result);     } }

非 Laravel 項目使用

服務(wù)端

<?php  $router = new FlcLaravelHproseRoutingRouter; $router->group(['prefix' => 'tests', 'namespace' => 'AppControllers'], function ($router) {     $router->add('one', 'Controller@one');     $router->add('two', 'Controller@two')->option(['...']);      $router->group(['prefix' => 'group'], function ($router) {         $router->add('one', 'Controller@group_one');          ...      }); });  $app = [     'config' => [         'hprose.server.default' => 'http',         'hprose.server.connections' => [             'http' => [                 'protocol' => 'http',             ],         ],     ], ];  $server = new FlcLaravelHproseServer($app); $server->setRouter($router)->start();

客戶端

<?php $app = [     'config' => [         'hprose.client.default' => 'http',         'hprose.client.connections' => [             'http' => [                 'protocol' => 'http',                 'uri'      => 'http://localhost/server.php',                 'async'    => false             ]         ]     ] ];  $client = new FlcLaravelHproseClient($app);  print_r($client->tests->one('222').PHP_EOL);

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊14 分享