• Go gRPC 调试工具


    在开发grpc的时候,Go gRPC 调试工具 可以说是必备工具。

    安装:

    go get github.com/fullstorydev/grpcui   
    go install github.com/fullstorydev/grpcui/cmd/grpcui
    grpcui -help #验证是否安装

    准备grpc项目,如:

    hello.proto 和main.go

    syntax = "proto3";
    option go_package = "./;proto";  
    package protos;
    
    service Greeter {
      rpc SayHello (HelloRequest) returns (HelloReply) ;
    }
     
    message HelloRequest {
      string name = 1;
    }
     
    message HelloReply {
      string message = 1;
    }
    package main
    
    import (
        "context"
        "fmt"
        pb "grpcdemo/protos"
        "net"
    
        "github.com/kataras/iris/v12"
        "github.com/kataras/iris/v12/middleware/logger"
        "github.com/kataras/iris/v12/middleware/recover"
        "google.golang.org/grpc"
        "google.golang.org/grpc/reflection"
    )
    
    func main() {
    
        GPRCServer()
    
        // http
        app := iris.New()
        app.Use(recover.New())
        app.Use(logger.New())
    
        app.Handle("GET", "/", func(ctx iris.Context) {
            ctx.WriteString("pong")
        })
        app.Run(iris.Addr(":8080"))
    }
    
    func GPRCServer() {
        // 监听本地端口
        listener, err := net.Listen("tcp", ":9090")
        if err != nil {
            return
        }
        s := grpc.NewServer()                  // 创建GRPC
        pb.RegisterGreeterServer(s, &server{}) // 在GRPC服务端注册服务
    
        reflection.Register(s)
        fmt.Println("grpc serve 9090")
        err = s.Serve(listener)
        if err != nil {
            fmt.Println(fmt.Sprintf("failed to serve: %v", err))
        }
    
    }
    
    type server struct{}
    
    func NewServer() *server {
        return &server{}
    }
    
    func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
        msg := "Resuest By:" + in.Name + " Response By :" + LocalIp()
        fmt.Println("GRPC Send: ", msg)
        return &pb.HelloReply{Message: msg}, nil
    }
    
    func LocalIp() string {
        addrs, _ := net.InterfaceAddrs()
        var ip string = "localhost"
        for _, address := range addrs {
            if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
                if ipnet.IP.To4() != nil {
                    ip = ipnet.IP.String()
                }
            }
        }
        return ip
    }

    windows技术爱好者
  • 相关阅读:
    HDU 3416
    The connection to adb is down, and a severe error has occured
    HDU 2255 奔小康赚大钱 KM裸题
    springMVC --@RequestParam注解(后台控制器获取參数)
    面试宝典之预处理、const与sizeof
    oracle中字符串类似度函数实測
    Android学习之路
    007_尚学堂_高明鑫_android 之项目的打包apk与apk的反编译
    提高eclipse使用效率(二)—— 提高Android开发效率的小技巧
    提高eclipse使用效率(一)--使用快捷键
  • 原文地址:https://www.cnblogs.com/majiang/p/14716527.html
Copyright © 2020-2023  润新知