一、前言
WebSocket是一种比http更高级的协议,它主要解决http单向、无状态、半双工的缺点,一次握手就可以让服务器和客户端之间实现连续不断的、双向的、数据传输。
最近,在做一个实时数据采集的项目,后端主要的数据采集功能实现的差不多了,所以现在考虑做个Web监控客户端,给项目上个远程操作。
二、前端之路
身为一个C语言出身的菜鸟,从未接触过web前端技术。怎么办?自学吧。身为一个菜鸟,自然就找到了菜鸟教程。花了一周时间,一股脑地把HTML/CSS/Javascript以及jQuery/Bootstrap/Ajax/Cookie/Session这些个技术都了解了一遍。好不容易实现了登录功能。
- 登录的大致流程:
Web端输入用户名、密码,通过ajax传到后端,后端将它们与本地的密码文本对比来验证,验证结果返回给前端,前端通过storageSession来保持会话,防止直接url访问。主要架构如下: - 服务器:BOA(考虑嵌入式arm的硬件平台)
- 服务器通信:CGI(C库-cgic、json-c库)
- 密码文本格式:json
- 加密算法:AES
- 会话保持:storageSession
三、实时通信
我的需求是web客户端可以实时监控底层数据。上网搜了搜,找到两种方式:Ajax轮询、websocket。
1. Ajax轮询
Ajax:不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
首先来说下第一种——Ajax轮询。顾名思义,基于Ajax的轮询,即设置一个周期T,每T秒向服务端请求一次数据,从而达到实时显示的功能,本质上还是http的request/response模式。话不多说,直接上个精简的js代码:
<script>
setInterval("getData()", 1000);
function getData(