package server_cli import ( "apiServer_service/proto" "apiServer_service/utils/loger" "apiServer_service/utils/nacos" "context" "errors" "google.golang.org/grpc" "google.golang.org/grpc/metadata" "os" "strconv" ) // 获取 apiServer 的地址 func getApiServer() string { service, err := nacos.DiscoverService("apiServer") if err != nil { loger.Error("获取服务器地址失败", err) if service.Ip != "" { return service.Ip + ":" + strconv.Itoa(int(service.Port)) } return "" } return service.Ip + ":" + strconv.Itoa(int(service.Port)) } // 获取 grpc 客户端 func getGrpcClient() (*proto.ServerVisitServiceClient, error) { serverUri := getApiServer() if serverUri == "" { loger.Error("获取服务器地址失败") return nil, errors.New("getApiServer error") } conn, err := grpc.NewClient(getApiServer(), grpc.WithInsecure()) if err != nil { loger.Error("getGrpcClient error", err) return nil, err } c := proto.NewServerVisitServiceClient(conn) return &c, nil } // getContext 创建带有 token 的上下文 func getContext() context.Context { // 创建带有 token 的上下文 token := os.Getenv("GRPC_TOKEN") md := metadata.Pairs("authorization", "Bearer "+token) // 设置 authorization 头 ctx := metadata.NewOutgoingContext(context.Background(), md) return ctx } // ReportVisit 演示方法 向服务器上报访问记录 func ReportVisit(token, note, VisitIp, OS string, point, UserId int) error { client, err := getGrpcClient() if err != nil { return err } recode, err := (*client).AddServerVisitRecode(getContext(), &proto.ServerVisitRequest{}) if err != nil { loger.Error("ReportVisit error", err) return err } loger.Debug("ReportVisit", recode) return nil }