前后端通信:WebSocket之实时监控

本文介绍了一种利用WebSocket技术实现实时数据监控的方法,对比了Ajax轮询与WebSocket的优劣,详细阐述了在MACOSX平台下使用websocketd库进行实时通信的过程。

一、前言

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(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值