grpc/

directory
v0.0.0-...-8e0b234 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 28, 2024 License: OSL-3.0

README

GRPC

protobuf 就是是定义业务接口(描述业务)

# go mod 的项目目录(标准) 在skill 目录下main
# 文件统配
protoc -I=. --go_out=. --go-grpc_out=. --go-grpc_opt=module="gitee.com/baicaijc/vblog/vblogtest" --go_opt=module="gitee.com/baicaijc/vblog/vblogtest" grpc/server/pb/*.proto 

服务端

业务接口约束:

// HelloServiceServer is the server API for HelloService service.
// All implementations must embed UnimplementedHelloServiceServer
// for forward compatibility
type HelloServiceServer interface {
	Greet(context.Context, *GreetRequest) (*GreetResponse, error)
	mustEmbedUnimplementedHelloServiceServer()
}
type HelloServiceServerImpl struct {
    // 继承基础的方法
    *pb.UnimplementedHelloServiceServer
}

// 覆盖掉他的方法, 编写真正的业务逻辑
func (i *HelloServiceServerImpl) Greet(context.Context, *GreetRequest) (*GreetResponse, error) {
    return nil, nil
}

func init() {
    // 注册业务实现到grpc服务
    RegisterHelloServiceServer(gprcServer, &HelloServiceServerImpl{})
}

// 首先是通过grpc.NewServer()构造一个gRPC服务对象
server := grpc.NewServer()
pb.RegisterHelloServiceServer(server, &HelloServiceServerImpl{})

lis, err := net.Listen("tcp", ":1234")
if err != nil {
    log.Fatal(err)
}
err = server.Serve(lis)
if err != nil {
    log.Fatal(err)
}

客户端

自动生成

func main() {
	// 需要先建立网络链接
	WithInsecure := grpc.WithTransportCredentials(insecure.NewCredentials())
	conn, err := grpc.Dial("localhost:1234", WithInsecure)
	if err != nil {
		panic(err)
	}

	client := pb.NewHelloServiceClient(conn)
	resp, err := client.Greet(context.Background(), &pb.GreetRequest{
		Name: "bob",
	})
	if err != nil {
		panic(err)
	}
	log.Println(resp)
}

Directories

Path Synopsis
pb

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL