創建服務器
===
現在服務端要去實現pb.go中service的interface
~~~
// AddServiceServer is the server API for AddService service.
type AddServiceServer interface {
Add(context.Context, *Request) (*Response, error)
Multiply(context.Context, *Request) (*Response, error)
}
~~~
實現
~~~
package main
import (
"GRPC-Study/demo1/proto"
"context"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
"net"
)
type server struct {}
func main() {
// 創建一個tcp服務
listener, e := net.Listen("tcp", ":9001")
if e != nil {
panic(e.Error())
}
// 創建一個沒有注冊的grpc
srv := grpc.NewServer()
proto.RegisterAddServiceServer(srv,&server{})// 注冊上去
reflection.Register(srv) // 注冊在給定的gRPC服務器上注冊服務器反射服務
// 監聽
if e := srv.Serve(listener);e != nil {
panic(e.Error())
}
}
// 要去實現service.proto定義的方法
func (s *server) Add(ctx context.Context,req *proto.Request) (*proto.Response,error) {
a,b := req.GetA(),req.GetB()
result := a + b
return &proto.Response{Result:result},nil
}
func (s *server) Multiply(ctx context.Context,req *proto.Request) (*proto.Response,error) {
b,a := req.GetB(),req.GetA()
result := b*a
return &proto.Response{
Result:result,
},nil
}
~~~