• 技术文章 >php框架 >Laravel

    laravel怎么通过rpc调用golang程序

    藏色散人藏色散人2021-03-11 09:00:47转载314

    下面由laravel教程栏目给大家介绍laravel怎么通过rpc调用golang程序 ,希望对需要的朋友有所帮助!

    Golang 服务端

    package mainimport (
        "fmt"
        "net"
        "net/rpc"
        "net/rpc/jsonrpc")type Goods struct{}//方法(必须是公有方法,且必须是两个参数)func (g *Goods) GetName(args string , res *string) error {
        *res = "args=" + args    return nil}func main() {
    
        //注册rpc服务,并自定义服务名
        err := rpc.RegisterName("Goods",new(Goods))
        if err != nil {
            panic(err.Error())
        }
    
        //监听端口,如果监听所有客户端则去掉ip
        listen, err := net.Listen("tcp", "127.0.0.1:7081")
        if err != nil {
            panic(err.Error())
        }
    
        fmt.Println("启动服务...")
    
        for {
            conn, err := listen.Accept() // 接收客户端连接请求
            if err != nil {
                continue
            }
    
            go jsonrpc.ServeConn(conn)
        }}

    PHP 客户端

    public function test(){
          $host = '127.0.0.1';
          $port = '7081';
    
          $conn = fsockopen($host, $port, $errno, $errstr, 3);
          if (!$conn) {
              dd('链接失败');
          }
    
          $method = 'Goods.GetName';
          $params = "我是字符串参数";
          $err = fwrite($conn, json_encode(array(
                  'method' => $method,
                  'params' => [$params],
                  'id' => 0,
              ))."\n");
         if ($err === false){
             dd('写入数据失败');
          }
    
         stream_set_timeout($conn, 0, 30000);//超时配置
         $line = fgets($conn);
         if ($line === false) {
             dd('获取响应数据失败');
          }
         dd(json_decode($line,true));}

    返回结果

    array:3 [
      "id" => 0
      "result" => "args=我是字符串参数"
      "error" => null]

    推荐:最新的五个Laravel视频教程

    以上就是laravel怎么通过rpc调用golang程序的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:laravel
    上一篇:怎么快速安装laravel框架的IDE提示工具 下一篇:介绍Laravel中的where高级使用方法
    第16期线上培训班

    相关文章推荐

    • 关于laravel配置修改及读取• 在laravel 5.6 中如何使用swagger• Laravel怎么同时接收路由参数和查询字符串中的参数• laravel-mix怎么自动压缩html模板文件• 怎么快速安装laravel框架的IDE提示工具

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网