entrance_grpc.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package config
  2. import (
  3. "entrance-grpc/iam"
  4. "github.com/sirupsen/logrus"
  5. "google.golang.org/grpc"
  6. "google.golang.org/grpc/credentials/insecure"
  7. "google.golang.org/grpc/keepalive"
  8. "os"
  9. "time"
  10. )
  11. var iamClient iam.IamClient
  12. var conn *grpc.ClientConn
  13. func InitEntranceIamClient() {
  14. if os.Getenv("ADMIN_GRPC_SERVER") == "" {
  15. logrus.Warnf("ADMIN_GRPC_SERVER is empty")
  16. return
  17. }
  18. var err error
  19. conn, err = grpc.NewClient(os.Getenv("ADMIN_GRPC_SERVER"),
  20. grpc.WithTransportCredentials(insecure.NewCredentials()),
  21. grpc.WithKeepaliveParams(keepalive.ClientParameters{
  22. Time: 30 * time.Second, // 发送 ping 的间隔
  23. Timeout: 10 * time.Second, // 等待 ack 的超时
  24. PermitWithoutStream: true, // 即使没有活跃流也发送 ping
  25. }),
  26. )
  27. if err != nil {
  28. logrus.Warnf("did not connect: %v", err)
  29. }
  30. iamClient = iam.NewIamClient(conn)
  31. }
  32. func GetIamClient() iam.IamClient {
  33. if iamClient == nil {
  34. InitEntranceIamClient()
  35. }
  36. return iamClient
  37. }
  38. func CloseGrpcConn() {
  39. conn.Close()
  40. }