package cmd import ( "framework_v2/internal/providers" "framework_v2/internal/providers/interceptor" "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) { providers.InitConfig() providers.InitLogger() providers.InitEnt() providers.InitRedis() providers.InitJwksRefresh() providers.InitAsynQClient() StartSpiderService() }, } func StartSpiderService() { if providers.Config.GRPC.GrpcListenAddr == "" { providers.Config.GRPC.GrpcListenAddr = "0.0.0.0:8081" } lis, err := net.Listen("tcp", providers.Config.GRPC.GrpcListenAddr) if err != nil { panic("failed to listen: " + err.Error()) } providers.Logger.Info("Server listening at " + providers.Config.GRPC.GrpcListenAddr) var opts = []grpc.ServerOption{ grpc.ChainUnaryInterceptor( logging.UnaryServerInterceptor(interceptor.ZapLogInterceptor()), auth.UnaryServerInterceptor(interceptor.JwtAuth), ), grpc.ChainStreamInterceptor( logging.StreamServerInterceptor(interceptor.ZapLogInterceptor()), auth.StreamServerInterceptor(interceptor.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 } }