这周我们继续在做基于GPRS的家居安防系统,这周我们遇到一个网页动态更新数据的问题。按照系统要求,网页上要实时显示房屋内的相关状态,如温度、报警器状态、相关监控设备是否打开等等,还有一个就是网页上能在线视频监控。而我们设计的网页是html静态网页(因为我也只能设计比较简单的静态网页)。要在静态网页上动态更新数据,这个有点难了,于是乎开始google了。。。
就拿动态更新温度数据来说,起初我们认为客户端的网页和服务器交互数据是完全通过CGI来完成,那么这个问题应该能用CGI解决,可是通过对CGI的仔细学习发现,CGI能接受网页提交的信息交系统处理,但是CGI返回给客户端的数据却是另外的一个网页,这样看来CGI就不能达到我们的需求。我们要求是在网页的固定位置,动态更新数据,而不能刷新整个网页。根据固定位置更新数据,我想到了网页的局部刷新技术,网上找之。什么ajax技术,什么WebService行为,什么PHP技术等等一堆,可是一个都看不懂,本身网页设计就不太懂,如果还要加上这些网页的高深技术的话,可能太麻烦,根据网上Javascript动态显示时间的程序。于是又在想能不能在网页之中嵌入一小段Javascript程序,每隔2秒执行一次,用来和服务器通信,然后将接受到的数据更新在网页上。根据这个想法,我们预先把需要更新的数据写到一个文件里,然后网页不断读取数据,同时系统不断更新文件内容,这样不就可以做到动态更新咯。可是,新手就是新手啊,考虑问题总是会简单得让人无语呀!这个方法执行一次还行,可是要不断远程读取文件,再传输,网页卡得动都动不了!所以行不通。“欠扁”同学也在从另一个方向想办法解决这问题,他还是根据CGI来想,他在网页的固定位置设置一个布局框架,然后再这个框架内不断刷新执行同一个CGI响应,起初还行,但是当网页跑了几分钟后,服务器就玩完了——死机。他和我一交流,我再根据他那个布局框架可以不断刷新的思路,我想把这个CGI程序替换成一个静态网页不就成了?只要这个静态网页刷新一次就去读取一次文件内容。于是按照这个想法去验证,果然成了。能达到我们想要的效果!
虽然问题暂时得以解决,可这个解决方法还是觉得太麻烦,应该有更好的解决办法吧!前两天一直在看socket编程,视频传输就是socket编程实现的,这也是必须这样做才能实现的。学了socket就想,可不可以也按照视频传输的原理,把之前动态刷新局部网页的问题也给解决了,而且这个方法是一个点对点的在线传输,根本不用什么刷新网页,因此不会影响速率和更新。革命尚未成功,同志们还需努力,继续探讨吧,希望随着学习的深入能找到更好的解决办法。