1.建立乙個hello.proto
其實就是定義乙個服務,然後後面需要實現它的介面
syntax = "proto3"
//path 表示生成的go檔案的存放位址,會自動生成目錄的。
//name 表示生成的go檔案所屬的包名
option go_package="./;hello";
package hello;
service helloservice
}message hellorequest
message helloreply
2.編譯
protoc --go_out=plugins=grpc:. *.proto
會在當前資料夾生成hello.pb.go
3.目錄樹
grpctest/
├── client
│ ├── go.mod
│ ├── go.sum
│ ├── main.go
│ └── proto
│ └── hello
│ ├── hello.pb.go
│ └── hello.proto
└── server
├── go.mod
├── go.sum
├── handler
│ └── handler.go
├── proto
│ └── hello
│ ├── hello.pb.go
│ └── hello.proto
└── service.go
4.實現並啟動定義的服務
mkdir server
cd server
go mod init server
在server/handler/handler.go檔案中定義乙個結構體,然後實現剛剛的sayhello方法
package handler
import (
"context"
"fmt"
hellopb "server/proto/hello"
"time"
)type hellosrv struct {}
func newhellosrv() hellopb.helloserviceserver
}func (*hellosrv)sayhello(ctx context.context, in *hellopb.hellorequest) (*hellopb.helloreply, error) , nil
}
在server/service.go檔案中編寫啟動服務
package main
import (
"fmt"
"net"
hellopb "server/proto/hello"
"server/handler"
"google.golang.org/grpc"
)const (
port = ":7778"
)func main()
grpcservice := grpc.newserver()
//註冊服務
hellopb.registerhelloserviceserver(grpcservice, handler.newhellosrv())
if err := grpcservice.serve(lis); err != nil
}
啟動服務
go run service.go
5.客戶端呼叫服務
mkdir client
cd client
go mod init client
需要將上面編譯生成的hello.pb.go檔案copy過來先,接著在client/main.go中呼叫服務
package main
import (
hellopb "client/proto/hello"
"google.golang.org/grpc"
"context"
"fmt"
)const (
address = "127.0.0.1:7778"
)func main()
defer conn.close()
client := hellopb.newhelloserviceclient(conn)
resp, err := client.sayhello(context.background(), &hellopb.hellorequest)
if err != nil
fmt.println(resp.time)
}
測試一下
go run main.go
client輸出:
2020-03-31 16:46:04.018755957 +0800 cst m=+5.300707152
server輸出:
姓名: lubenwei 年齡: 21
gRPC的簡單Go例子
grpc是乙個高效能 通用的開源rpc框架,其由google主要面向移動應用開發並基於http 2協議標準而設計,基於protobuf protocol buffers 序列化協議開發,且支援眾多開發語言。grpc提供了一種簡單的方法來精確地定義服務和為ios android和後台支援服務自動生成可...
1 gRPC使用例子
grpc使用例子說明syntax proto3 service helloservice message hellorequest message helloresponseprotoc go out plugins grpc 生成的核心 如下 client 根據helloservice生成的客戶端...
通過gRPC讓PHP呼叫Go的服務
由於篇幅限制,本文只能提供乙個簡單的使用流程,不會對具體的概念深入解釋 你至少需要了解的基本知識 php,composer,go,protobuf,grpc 第一步 編寫 proto 檔案 在本例中,我們定義乙個計算器類,擁有相加,相減兩個方法,以及定義引數和返回值的型別 syntax proto3...