71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
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.GRPC.GrpcListenAddr == "" {
|
|
config.Config.GRPC.GrpcListenAddr = "0.0.0.0:8081"
|
|
}
|
|
|
|
lis, err := net.Listen("tcp", config.Config.GRPC.GrpcListenAddr)
|
|
if err != nil {
|
|
panic("failed to listen: " + err.Error())
|
|
}
|
|
logger.Logger.Info("Server listening at " + config.Config.GRPC.GrpcListenAddr)
|
|
|
|
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
|
|
}
|
|
|
|
}
|