package cmd import ( "framework_v2/internal/app/config" "framework_v2/internal/app/ent" "framework_v2/internal/app/jobs" "framework_v2/internal/app/jwks" "framework_v2/internal/app/logger" "framework_v2/internal/app/redis" grpc2 "framework_v2/internal/middleware/grpc" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/auth" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/logging" "github.com/spf13/cobra" "google.golang.org/grpc" "google.golang.org/grpc/reflection" "net" ) var rpcCommand = &cobra.Command{ Use: "serve", Run: func(cmd *cobra.Command, args []string) { config.InitConfig() logger.InitLogger() ent.InitEnt() redis.InitRedis() jwks.InitJwksRefresh() jobs.InitAsynQClient() StartSpiderService() }, } func StartSpiderService() { if config.Config.ListenAddr.GRPC == "" { config.Config.ListenAddr.GRPC = "0.0.0.0:8081" } lis, err := net.Listen("tcp", config.Config.ListenAddr.GRPC) if err != nil { panic("failed to listen: " + err.Error()) } logger.Logger.Info("Server listening at " + config.Config.ListenAddr.GRPC) var opts = []grpc.ServerOption{ grpc.ChainUnaryInterceptor( logging.UnaryServerInterceptor(grpc2.ZapLogInterceptor()), auth.UnaryServerInterceptor(grpc2.JwtAuth), ), grpc.ChainStreamInterceptor( logging.StreamServerInterceptor(grpc2.ZapLogInterceptor()), auth.StreamServerInterceptor(grpc2.JwtAuth), ), } grpcServer := grpc.NewServer(opts...) reflection.Register(grpcServer) // 如需实现,需要手动实现这里 //library.RegisterLibraryServiceServer(grpcServer, &services.LibraryService{}) //document.RegisterDocumentServiceServer(grpcServer, &services.DocumentService{}) err = grpcServer.Serve(lis) if err != nil { panic(err) return } }