Files
apiServer-service/utils/server_cli/serverCli.go
T
shiran 8654cd6e5c fix(server_cli): 修正 gRPC 客户端连接地址
- 将 getApiServer() 函数返回的地址直接赋值给 serverUri 变量
- 使用 serverUri 变量创建 gRPC客户端连接,而不是调用 getApiServer() 函数
2025-07-22 17:47:33 +08:00

67 lines
1.7 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("获取服务器地址失败", 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(serverUri, 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
}