zhangzengfei
2024-04-16 e4840c7de5ff5f1a816a4fd023ba5bf797a4fa9e
service/report.go
@@ -11,6 +11,7 @@
   "gat1400Exchange/config"
   "gat1400Exchange/pkg/logger"
   "gat1400Exchange/models"
   "gat1400Exchange/util"
   "github.com/hashicorp/golang-lru/v2/expirable"
)
@@ -39,9 +40,11 @@
   IpAddr      string                 `json:"ip"`
}
func reportDeviceInfo() error {
func DeviceInfoReportTask() error {
   logger.Info("Start device info report task, server:%s.", config.ForwardConf.ReportServer)
   if config.ForwardConf.ReportServer == "" {
      return errors.New("server addr is empty !")
      return errors.New("Server addr is empty!")
   }
   var d models.Device
@@ -71,7 +74,7 @@
      logger.Info("Report device info. %+v", dev)
      _, err = HttpPost(config.ForwardConf.ReportServer, nil, data)
      _, err = util.HttpPost(config.ForwardConf.ReportServer, nil, data)
      if err != nil {
         return err
      }
@@ -82,51 +85,4 @@
func KeepDeviceAlive(id string) {
   deviceAliveCache.Add(id, true)
}
func DeviceInfoReportTask() {
   interval := config.ForwardConf.ReportInterval
   if interval == 0 {
      interval = 10
   }
   logger.Info("start device info report task, server:%s interval:%d.", config.ForwardConf.ReportServer, interval)
   ticker := time.NewTicker(1 * time.Second)
   for {
      select {
      case <-ticker.C:
         err := reportDeviceInfo()
         if err != nil {
            logger.Warn(err.Error())
         }
         ticker.Reset(time.Duration(interval) * time.Second)
      }
   }
}
func HttpPost(url string, header map[string]string, data []byte) ([]byte, error) {
   req, err := http.NewRequest(http.MethodPost, url, bytes.NewBuffer(data))
   if err != nil {
      return nil, err
   }
   req.Header.Set("Content-Type", "applicaiton/json; charset=UTF-8")
   if header != nil {
      for k, v := range header {
         req.Header.Set(k, v)
      }
   }
   cli := &http.Client{}
   resp, err := cli.Do(req)
   if err != nil {
      return nil, err
   }
   defer resp.Body.Close()
   body, err := io.ReadAll(resp.Body)
   if err != nil {
      return nil, err
   }
   return body, nil
}