laravel中使用hprose 远程对象

在你的 composer 项目中的 composer.json 文件中,添加这部分:


"require": {

    "hprose/hprose": ">=2.0.0"

}


就可以了。

使用composer update 命令更新扩展包

1.在服务器端在app目录下 创建Services目录(可手动创建)

创建UserService.php

public function init(){
       addMethod('test',$this);    //添加test方法  传入实例化对象,则是添加实例化方法
      //$server->addMethod('test', 'UserService');  //传入类名  则是添加静态方法
       $server->start();
}
public function test(){
      return 'hello';
}

路由设置,在api路由中添加

Route::post('test', function (Request $request) {

      $server = new \App\Services\UserService();

      $server->init();  //开启服务

})->middleware('api');

2.在客户端远程调用,同样安装扩展包之后

public function index(Request $request){

      //服务端路由在api路由中配置,则此处路由应加上api/test

      //实例化可选参数 加上false 即创建创建一个同步的 HTTP 客户端

      //不写false  为创建一个异步的 HTTP 客户端

      $user =new Client('http://127.0.0.1:81/api/test',false);

      $res=$user->test();

      return $res;

}

需要注意的是,异步的HTTP 客户端是不能往外返回值的

可以使用静态方法来创建

$client = Client::create('http://localhost:81/api/test');

$client->test()->then(function($result){

  echo $result;

});

这样 会直接输出:hello

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,989评论 6 342
  • 是什么 如果你知道yum、apt-get、npm、bower等命令中的一种或者多种,那么,你也能很快知道compo...
    旱魃一样阅读 3,183评论 0 9
  • 进入社会3年,不仅没攒下一分钱,还因为三年前的错误决定让家庭背上了不少的债务,使原本拆二代的自己成了负二代。命运就...
    玄壳子阅读 137评论 0 0
  • 网站的架构模式 1.分层、2.分割、3.分布式、4.集群、5.缓存、6.异步、7.冗余、8.自动化、9.安全 1....
    仒叻戓厺阅读 465评论 0 0