RTSP视频智能分析平台EasyNVR多nginx启动时getlivesessions接口如何返回所有nginx数据?

我们讲过TSINGSEE青犀视频云边端智能分析平台支持多nginx启动,多nginx启动的目的主要是为了缓解一个nginx启动时带来的压力。

测试多nginx启动期间,视频智能分析平台EasyNVR的getlivesessions接口正常来说应该会返回所有nginx的数据,但实际上只返回了默认nginx的数据,没有其他nginx的数据。

EasyNVR视频平台的getlivesessions接口返回的nginx信息,其实是需要golang从nginx的http://127.0.0.1:10100/getlivesessions这个接口获取的数据,然后拼装下返回到前端。而该问题就是golang只需要向默认的nginx接口请求,并返回了数据。

此处是不开启多nginx时,golang只需要向默认的nginx的接口请求然后返回数据;

此处是开启多nginx时,golang需要向所有的nginx的接口请求返回数据。因此我们按照如下调用接口请求,获取数据:

func getReuslts(index int) (results []gjson.Result) {
   client := http.Client{
      Timeout: 3 * time.Second,
   }
   resp := &http.Response{}
   var err error
   if index == 0 {
      resp, err = client.Get(fmt.Sprintf("http://127.0.0.1:%d/getlivesessions", GetHTTPPort()))
   } else {
      resp, err = client.Get(fmt.Sprintf("http://127.0.0.1:%d/getlivesessions", GetMutliHTTPPort(index)))
   }
   if err != nil {
      return
   }
   defer resp.Body.Close()
   body, err := ioutil.ReadAll(resp.Body)
   if err != nil {
      return
   }
   gsessions := gjson.GetBytes(body, "EasyDSS.Body.Sessions.Sessions")
   if !gsessions.IsArray() {
      return
   }
   return gsessions.Array()
}

如此,便能获取所有nginx接口的返回数据了。TSINGSEE青犀视频其他视频平台比如EasyGBS、EasyCVR等都是支持多nginx启动的,如果有朋友不明白,可以关注我们,如需测试或者了解更多,也可以直接联系我们,欢迎大家的咨询。

原文地址:https://www.cnblogs.com/EasyNVR/p/14189931.html