EasyCVR前端关闭播放器,后端websocket播放链接依然存在是什么原因?
作者:互联网
EasyCVR平台可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海康SDK、大华SDK等,能对外分发RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式的视频流,能实现全平台、全终端的覆盖。
有用户反馈,EasyCVR平台前端关闭播放器之后,但是后端播放websocket的链接依然存在,请求我们排查协助。今天分享一下排查过程与解决办法。
排查时发现,上述现象出现的原因是前端关闭之后,后端没有监听到关闭消息,导致链接没有正常关闭,还占用着播放链接。
添加如下代码,在开启websocket代理链接时,开启读取消息的进程,如果从中读取到前端关闭的消息,那么就将和前端建立的websocket链接关闭。
go func() { aa, bb, err := ws.ReadMessage() if aa == -1 { fmt.Println(bb, err) } ws.Close() }() for { line, err := reader.ReadBytes(' ') //_, err := io.ReadFull(reader, buf) // 将 s 中的数据读取到 buf 中 //fmt.Printf("%s\n", buf) // HELLO WORLD! //fmt.Println(n, err) // 12 <nil> if err != nil { fmt.Printf("err:--%v", err) return }
优化后,再次播放,已经能够正常播放,也没有多余的链接占用。
EasyCVR云服务平台的直播观看几乎能够覆盖所有终端,满足多行业多场景的安防监控需求。此外平台也在积极研发视频人工智能检测与分析功能,包括人脸检测、人脸识别、人流量统计、车辆检测、车牌识别、烟火检测、安全帽检测、行为识别等。感兴趣的用户可以前往演示平台进行体验或部署测试。
标签:播放器,websocket,err,fmt,EasyCVR,关闭,链接 来源: https://www.cnblogs.com/easycvr/p/16364087.html