使用 grpc.NewServer() 函数创建 gRPC 服务器的代码示范

7 min read

下面是一个示例代码,使用 grpc.NewServer() 函数创建一个 gRPC 服务器:

package main

import (
    "context"
    "log"
    "net"

    "google.golang.org/grpc"
)

// 定义 HelloService
type HelloService struct{}

// 实现 HelloService 接口
func (s *HelloService) SayHello(ctx context.Context, in *HelloRequest) (*HelloResponse, error) {
    log.Printf("Receive message: %s", in.Message)
    return &HelloResponse{Message: "Hello, " + in.Name}, nil
}

// main 函数
func main() {
    // 创建监听
    lis, err := net.Listen("tcp", ":50051")
    if err != nil {
        log.Fatalf("failed to listen: %v", err)
    }

    // 创建 gRPC 服务器
    s := grpc.NewServer()

    // 注册 HelloService
    RegisterHelloServiceServer(s, &HelloService{})

    // 启动 gRPC 服务
    log.Printf("gRPC server listening on %v", lis.Addr())
    if err := s.Serve(lis); err != nil {
        log.Fatalf("failed to serve: %v", err)
    }
}

在这个示例中,我们先创建了一个 HelloService 结构体,并为其实现了 SayHello() 方法。接着,在 main() 函数中,我们使用 net.Listen() 函数创建了一个 TCP 监听器,并使用 grpc.NewServer() 函数创建了一个 gRPC 服务器实例。然后,我们将 HelloService 注册到这个服务器中,最后启动了这个 gRPC 服务。