php教程 laravel怎么通过rpc调用golang程序

 所属分类:php教程

 浏览:151次-  评论: 0次-  更新时间:2022-05-31
描述:这是一篇php教程 laravel怎么通过rpc调用golang程序的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。 ...
这是一篇php教程 laravel怎么通过rpc调用golang程序的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。

下面由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程序的详细内容,更多请关注zzsucai.com其它相关文章!

 标签:
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!