我们讲过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启动的,如果有朋友不明白,可以关注我们,如需测试或者了解更多,也可以直接联系我们,欢迎大家的咨询。