This commit is contained in:
2025-10-05 20:29:32 +08:00
parent 45079048af
commit ac88ca13eb
4 changed files with 67 additions and 63 deletions

View File

@@ -21,20 +21,34 @@ type Server struct {
Grpc *grpc.Server
Ctx context.Context
Mux *gwRuntime.ServeMux
grpcConns map[string]*grpc.ClientConn // 连接池
}
func New(addr string) *Server {
srv := &Server{Ctx: context.Background(), Grpc: grpc.NewServer(), Mux: gwRuntime.NewServeMux(
gwRuntime.WithForwardResponseRewriter(responseEnvelope),
)}
srv := &Server{
Ctx: context.Background(),
Grpc: grpc.NewServer(),
Mux: gwRuntime.NewServeMux(gwRuntime.WithForwardResponseRewriter(responseEnvelope)),
grpcConns: make(map[string]*grpc.ClientConn),
}
// register service to grpc.Server
{register}
reflection.Register(srv.Grpc)
// 连接池: 只创建一次连接并复用
conn, ok := srv.grpcConns[addr]
if !ok {
var err error
conn, err = grpc.Dial(addr, grpc.WithInsecure())
if err != nil {
panic("failed to dial grpc server: " + err.Error())
}
srv.grpcConns[addr] = conn
}
// 将服务注册到Gateway
opts := []grpc.DialOption{grpc.WithInsecure()}
{gw}
// Register services swagger
@@ -69,8 +83,9 @@ func responseEnvelope(_ context.Context, response proto.Message) (interface{}, e
}
return map[string]any{
"code": 0,
"message": "OK",
"result": response,
"message": vars.OK,
"details": response,
"timeseq": time.Now().Unix(),
}, nil
}
@@ -101,3 +116,8 @@ func (s *{service}Server) {func}(ctx context.Context,in *pb.{input}) (*pb.{outpu
return {serviceLower}.{func}(ctx, in)
}
`
var Handler = `
if err := pb.Register{service}Handler(srv.Ctx, srv.Mux, conn); err != nil {
panic("Failed to register {service} handler: " + err.Error())
}
`