easynvr网页兼容调试:ie浏览器下的接口调用成功但页面无法显示实时的数据

2020-04-23 15:51:24 浏览数 (2)

许多问题很难在开发的过程中就想的面面俱到,都是在实际应用、调试的过程中一一的优化的。由于easynvr的受众越来越多,因此也出现了好多在开发之初并没有留意的一些细节。我这次发现的问题就是给客户远程解决问题过程中发现的。在此记录下来方便自己,也方便大家了解。

问题概述

使用过easynvr的都知道,easynvr是通过通道配置来接入摄像头的,这些通道配置、通道展示……都是通过接口的调用来完成的。理论上,只要调用接口返回成功码,就表示该接口调用成功,后续操作得以进行。

接下来就是见证奇怪的时刻:在给客户远程时发现,当成功调用接口后,浏览器没有第一时间将接口返回的数据进行处理展示操作。

1.只要rtsp地址没有问题,我这边配置成功,在视频广场应该是会出现对应的视频通道信息的。

2.页面也是提示 配置成功,并且通道也是开启的。

3.空空如也的视频广场,亮瞎了。。

4.再次回到通道配置查看,发现之前的成功配置不见了。。。

问题分析

出现这样的问题,第一时间想到的是数据是否设置成功。经过我的验证,发现接口设置数据是成功的。而且重点是这个问题在其他浏览器上都没有出现,偏偏在IE上会出现。。。。

不得不让我想到是不是又是兼容性的问题。。。

经过上网查阅资料发现。这个问题的原因在于ie浏览器自身。

ie浏览器在调用一个接口成功后,下次调用会优先获取上次接口在浏览器中的缓存数据。也就是我们调用接口获取的数据,虽然是通过该接口获得,但不一定是实时的、最新的。

解决问题:

我们为了确保每次调用接口的不同,我们需要在每次调用接口时,给接口传递一个唯一、不重复的参数。

代码语言:javascript复制
$.get(_url   "/getchannelsconfig?t=" new Date().getTime());

easynvr最终选择是在调用对应接口时,传递一个时间参数,可以保证他的唯一性。这样每次浏览器识别的接口一样,但是传递这个参数是不同的,就会获取到实时信息。

效果也是明显:

备注:由于easynvr通过接口获取的数据相对来说是有点多的,因此每次通过接口获取数据,相对来说是有点影响加载效果的,没有在缓存中直接提取来的迅速。因此除非必须使用ie浏览器,否则不建议通过这种方式来实现此效果。

0 人点赞