在线课堂Web无插件直播点播系统EasyDSS如何接入第三方视频管理平台EasyNVS?

大家知道我们有一套统一管理EasyNVR的视频管理平台EasyNVS,对于部署多套EasyNVR的用户或者项目来说,EasyNVS的出现无疑是在用户体验层次上的一个提升。随后我们也将逐步研发可以管理其他平台的EasyNVS,目前正在测试的就是管理EasyDSS的EasyNVS版本。

为了实现集中管理EasyDSS,新创建了一个集中管理的产品EasyNVS。可以通过EasyNVS去管理底下多个EasyDSS,实现对EasyDSS的增删改查的操作。本文分享下EasyDSS如何接入第三方平台EasyNVS。

EasyNVS和EasyDSS的交互比较通俗易懂,将EasyDSS当成客户端,EasyNVS当成服务端即可。客户端向服务端请求登录,将一些数据通过登录的请求,传到服务端。之后服务端和客户端之间实现保活,监听客户端的状态。

我们在代码中的实现就是将数据写成一种ini的配置文件,将这个配置文件进行加载,之后请求登录实现一种长连接的形式。

iniText := ""
locahttpPort := utils.Conf().Section("http").Key("http_port").MustInt(10080)
iniText = fmt.Sprintf(iniTemp, Ip, port, uid, uname, token, utils.ShortID(), locahttpPort, Ip, customDomains, uid)
_, err = config.UnmarshalClientConfFromIni(&g.GlbClientCfg.ClientCommonConf, iniText)
if err != nil {
   log.Println("解析穿透ini失败:", err.Error())
   return
}
err = g.GlbClientCfg.ClientCommonConf.Check()
if err != nil {
   log.Println("穿透心跳间隔检测:", err.Error())
   return
}

conf, err := ini.Load(strings.NewReader(iniText))
if err != nil {
   log.Println("将穿透ini加载成配置文件失败:", err.Error())
   return
}
pxyCfgs, visitorCfgs, err := config.LoadProxyConfFromIni(g.GlbClientCfg.User, g.GlbClientCfg.DeviceID, g.GlbClientCfg.DeviceName, conf, g.GlbClientCfg.Start)
if err != nil {
   log.Println("返回穿透代理配置信息失败:", err.Error())
   return
}
//开启穿透服务
Client = client.NewService(pxyCfgs, visitorCfgs)
go func() {
   if err := Client.Run(); err != nil {
      log.Printf("nvc start error, %v", err)
   }
}()

管理EasyDSS平台的EasyNVS和管理EasyNVR的EasyNVS会有不同,在后续的博文更新中我们将不定期和大家分享我们的研发过程或者操作方式。如果大家感兴趣,欢迎关注我们。

原文地址:https://www.cnblogs.com/easydss/p/14481932.html