From 47b735fea1c987c713a8d7252a011bdd5706ba71 Mon Sep 17 00:00:00 2001 From: yumaojun03 <719118794@qq.com> Date: Sun, 24 Aug 2025 14:14:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=20service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skills/rpc/protobuf/README.md | 1 - skills/rpc/protobuf/service_a/main.go | 39 ++++++++++++++++++++++++++- skills/rpc/protobuf/service_b/main.go | 27 ++++++++++++++++++- 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/skills/rpc/protobuf/README.md b/skills/rpc/protobuf/README.md index c0d4cd0..bff814a 100644 --- a/skills/rpc/protobuf/README.md +++ b/skills/rpc/protobuf/README.md @@ -105,7 +105,6 @@ service HelloService { protoc -I=. --go-grpc_out=. --go-grpc_opt=module="122.51.31.227/go-course/go18" skills/rpc/protobuf/hello_service/interface.proto ``` - interface_grpc.pb.go ```go // 服务端接口 diff --git a/skills/rpc/protobuf/service_a/main.go b/skills/rpc/protobuf/service_a/main.go index 38dd16d..d190c7a 100644 --- a/skills/rpc/protobuf/service_a/main.go +++ b/skills/rpc/protobuf/service_a/main.go @@ -1,3 +1,40 @@ package main -func main() {} +import ( + "context" + "log" + "net" + + "122.51.31.227/go-course/go18/skills/rpc/protobuf/hello_service" + "google.golang.org/grpc" +) + +func main() { + // 首先是通过grpc.NewServer()构造一个gRPC服务对象 + grpcServer := grpc.NewServer() + + // SDK 提供 服务实现对象的注册 + hello_service.RegisterHelloServiceServer(grpcServer, &HelloService{}) + + lis, err := net.Listen("tcp", ":1234") + if err != nil { + log.Fatal(err) + } + + // 然后通过grpcServer.Serve(lis)在一个监听端口上提供gRPC服务 + grpcServer.Serve(lis) +} + +var _ hello_service.HelloServiceServer = (*HelloService)(nil) + +// 实现一个GRPC的对象, 并行实现了 HelloServiceServer 接口 +// 该对象就可以注册给GRPC框架 +type HelloService struct { + hello_service.UnimplementedHelloServiceServer +} + +func (h *HelloService) Hello(ctx context.Context, req *hello_service.Request) (*hello_service.Response, error) { + return &hello_service.Response{ + Value: "Hello " + req.Value, + }, nil +} diff --git a/skills/rpc/protobuf/service_b/main.go b/skills/rpc/protobuf/service_b/main.go index 7905807..93e7e07 100644 --- a/skills/rpc/protobuf/service_b/main.go +++ b/skills/rpc/protobuf/service_b/main.go @@ -1,5 +1,30 @@ package main -func main() { +import ( + "context" + "fmt" + "log" + "122.51.31.227/go-course/go18/skills/rpc/protobuf/hello_service" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +func main() { + // grpc.Dial负责和gRPC服务建立链接 + conn, err := grpc.NewClient("localhost:1234", grpc.WithTransportCredentials(insecure.NewCredentials())) + if err != nil { + log.Fatal(err) + } + defer conn.Close() + + // 使用SDK调用远程函数 + helloServiceClient := hello_service.NewHelloServiceClient(conn) + resp, err := helloServiceClient.Hello(context.Background(), &hello_service.Request{ + Value: "bob", + }) + if err != nil { + panic(err) + } + fmt.Println(resp.Value) }