Files
apiServer-service/utils/server_cli/serverCli.go
T
shiran 7df6cddc1f init
2025-03-05 18:07:55 +08:00

64 lines
1.6 KiB
Go

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("getApiServer error", err)
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
}