grpc入门

rushui · · 687 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

## 准备工作 ``` go get -u google.golang.org/grpc go get -u github.com/golang/protobuf/protoc-gen-go export PATH=$PATH:$GOPATH/bin ``` ## 编辑pd/hello.proto ``` syntax = "proto3"; option objc_class_prefix = "HLW"; package hello; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) { } } // The request message containing the user's name. message HelloRequest { string name = 1; } // The response message containing the greetings message HelloReply { string message = 1; } ``` ## server.go ``` package main import ( "log" "net" pb "github.com/grpc-example/simple/pb" "golang.org/x/net/context" "google.golang.org/grpc" ) const ( PORT = ":50001" ) type server struct{} func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { log.Println("request: ", in.Name) return &pb.HelloReply{Message: "Hello " + in.Name}, nil } func main() { lis, err := net.Listen("tcp", PORT) if err != nil { log.Fatalf("failed to listen: %v", err) } s := grpc.NewServer() grpc.EnableTracing = true pb.RegisterGreeterServer(s, &server{}) log.Println("rpc服务已经开启") s.Serve(lis) } ``` ## cli.go ``` package main import ( "log" "os" pb "github.com/grpc-example/simple/pb" "golang.org/x/net/context" "google.golang.org/grpc" ) const ( address = "localhost:50001" ) func main() { conn, err := grpc.Dial(address, grpc.WithInsecure()) if err != nil { log.Fatalf("did not connect: %v", err) } defer conn.Close() c := pb.NewGreeterClient(conn) name := "lin" if len(os.Args) > 1 { name = os.Args[1] } r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name}) if err != nil { log.Fatalf("could not greet: %v", err) } log.Println(r.Message) } ``` ## 编译.proto文件命令 ``` protoc --go_out=plugins=grpc:. hello.proto ``` ## 下载demo ``` git clone https://github.com/grpc-example/simple.git cd simple ``` ## run server ``` go run server.go ``` ## run client ``` go run cli.go ``` ## 项目地址 [https://github.com/grpc-example/simple](https://github.com/grpc-example/simple)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

687 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传