Heim > PHP-Framework > Laravel > Wie ruft Laravel das Golang-Programm über RPC auf?

Wie ruft Laravel das Golang-Programm über RPC auf?

藏色散人
Freigeben: 2021-03-11 09:00:47
nach vorne
2565 Leute haben es durchsucht

vorgestellt, um vorzustellen, wie Laravel das Golang-Programm über RPC aufruft. Ich hoffe, es wird den Freunden helfen, die es brauchen! Golang-Server

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)
    }}
Nach dem Login kopieren

PHP-Client

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));}
Nach dem Login kopieren

Ergebnisse zurückgeben

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

Empfohlen: Die neuesten fünf Laravel-Video-Tutorials

Das obige ist der detaillierte Inhalt vonWie ruft Laravel das Golang-Programm über RPC auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage