1.proto
syntax = "proto3";
option go_package = ".;proto";
service Grenter {
rpc TestLanjie (Urequest) returns (Uresponse);
}
message Urequest {
string data = 1;
}
message Uresponse {
string data =1;
}
2.server
package main
import (
"context"
"fmt"
"grpctest2/lanjieqi/proto"
"net"
"google.golang.org/grpc"
)
type Server struct{}
func (s *Server) TestLanjie(ctx context.Context, request *proto.Urequest) (*proto.Uresponse, error) {
return &proto.Uresponse{
Data: "req:" + request.Data + "/r/n" + "res:ok",
}, nil
}
func main() {
fmt.Println("start server")
interceptor := func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
fmt.Println("接受到一个新请求")
res, err := handler(ctx, req)
fmt.Println("请求结束1")
return res, err
}
opt := grpc.UnaryInterceptor(interceptor)
g := grpc.NewServer(opt)
proto.RegisterGrenterServer(g, &Server{})
conn, _ := net.Listen("tcp", "127.0.0.1:8090")
fmt.Println("conn", conn)
g.Serve(conn)
}
3.client
package main
import (
"context"
"fmt"
"grpctest2/lanjieqi/proto"
"google.golang.org/grpc"
)
func main() {
fmt.Println("start Dial!")
conn, _ := grpc.Dial("127.0.0.1:8090", grpc.WithInsecure())
defer conn.Close()
c := proto.NewGrenterClient(conn)
res, _ := c.TestLanjie(context.Background(), &proto.Urequest{Data: "spl"})
fmt.Println(res.Data)
fmt.Println("over!")
}