튜토리얼 칼럼에서 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) }}
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은 rpc를 통해 golang 프로그램을 어떻게 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!