GO下grpc快速体验
package main
import (
"context"
"log"
"net"
"google.golang.org/grpc"
"google.golang.org/protobuf/types/known/emptypb"
)
// 假设你有以下的gRPC protobuf定义
// syntax = "proto3";
// package example;
//
// service Greeter {
// rpc Greet(google.protobuf.Empty) returns (google.protobuf.Empty);
// }
// GreeterServer 是服务器结构体
type GreeterServer struct {
// ...
}
// Greet 实现 GreeterService 中定义的 Greet 方法
func (s *GreeterServer) Greet(ctx context.Context, _ *emptypb.Empty) (*emptypb.Empty, error) {
// 实现你的逻辑
log.Print("Greeting called")
return &emptypb.Empty{}, nil
}
func main() {
// 创建 gRPC 服务器
rpcServer := grpc.NewServer()
// 注册服务
greeterServer := &GreeterServer{}
RegisterGreeterServiceServer(rpcServer, greeterServer)
// 监听本地端口
listener, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
// 服务启动循环
log.Println("Serving gRPC on 0.0.0.0:50051")
if err := rpcServer.Serve(listener); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
这段代码展示了如何在Go中使用gRPC创建一个简单的服务器。首先定义了一个服务器结构体,实现了在protobuf定义的服务中的方法。然后创建了一个gRPC服务器,将服务器注册到这个服务器上,并在特定的端口上监听连接。最后,服务器进入一个循环,等待并处理来自客户端的请求。
评论已关闭