Web实时更新客户端数据
1 轮询方式实现客户端数据及时更新
在基于Web的即时通信、股票行情这样的系统中,需要客户端能够及时更新内容。由于B/S架构的特性(Http连接是无状态连接, 即服务器处理完客户的请求,并收到客户的应答后即断开连接),最简单的方式是通过客户端轮询的方式实现客户端刷新。
较早是将一个隐藏的iframe嵌在网页中,通过该iframe不断刷新来获取最新内容,现在通过Ajax来实现,通过每隔一段时间发起Http请求实现数据更新,并可以实现异步更新。轮询方式显而易见的缺点就是会造成服务器较大负载。
Note:传统的JavaApplet和ActiveX通过Socket通信可以实现数据的及时更新。
2 Comet 服务器推送数据到客户端
现在还有一种技术是Comet,Comet其实就是许多年前流行的CGI聊天室所用的Server Push技术。这个方法一开始是由Client对Server建立连接,但是Server在建立连接后,送出的header中要把content-type设为“multipart/x-mixed-replace”,就是server之后要分或多次返回多片段数据,让Client保持连接,并且把每次拿到的数据取代之前的数据片段。接着client就只要在保持不断的连接上等着server发送的数据就好了。Comet利用这种特性,加上Ajax能异步更新数据,变成开发rich client非常重要的技术。
但Comet不像Ajax那样容易用到现成的http server上,它需要server上有适当的程式配合。[2]参考文献[1] 提供了使用Comet的代码片段。
3 HTML 5的数据更新
HTML5本身提供了对即时数据更新的支持。
Html5中的Server-Sent 事件用来实现网页自动获取来自服务器的更新,Server-Sent是单方面的消息传递。通过服务器发送事件,更新能够自动到达,从而实现微博更新、赛事结果这样的应用。
HTML5的Web Socket 使浏览器和服务器之间可以建立一个基于 TCP 连接的双向通道。Web 开发人员可以非常方便地使用 WebSocket 构建实时 web 应用。
4 参考
[1] Comet 服务器“推”技术,实现web服务器“主动”向客户端发送数据。
http://www.360doc.com/content/11/0617/16/597197_127627804.shtml
[2] Comet(Server Push) on Turbogears(2)
blog.vgod.tw/tag/server-push
[3] HTML5服务器发送事件.
http://www.w3school.com.cn/html5/html_5_serversentevents.asp
[4] 使用 HTML5 WebSocket 构建实时 Web 应用.
http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/
Web实时更新客户端数据的更多相关文章
- android ListView中含有按钮事件实时更新ListView数据案例
1.布局文件Listview <?xml version="1.0" encoding="utf-8"?> <android.support. ...
- WebSocket 实时更新mysql数据到页面
使用websocket的初衷是,要实时更新mysql中的报警信息到web页面显示 没怎么碰过web,代码写的是真烂,不过也算是功能实现了,放在这里也是鞭策自己,web也要多下些功夫 准备 引入依赖 & ...
- Python tkinter库将matplotlib图表显示在GUI窗口上,并实时更新刷新数据
代码 1 ''' 2 使用matplotlib创建图表,并显示在tk窗口 3 ''' 4 import matplotlib.pyplot as plt 5 from matplotlib.pylab ...
- solr实时更新mysql数据的方法
第一步:创建core core是solr的特有概念,每个core是一个查询数据,.索引等的集合体,你可以把它想象成一个独立数据库,我们创建一个新core:名字[core1] 进入linux命令行,进入 ...
- Android RecyclerView嵌套EditView实时更新Item数据
一.场景(例如:购物车) 1.当我们需要以列表样式管理某些数据时,可能需要列表项的某个字段可编辑 2.编辑Item上的某个字段后可能还要更新相关字段的值 二.可能遇到的问题 1.列表滑动导致输入框中的 ...
- WinForm DataGridView实时更新表格数据
前言 一个特殊的项目没有用第三方控件库,但用到了DataGridView,由于是客户端产生的数据,所以原始数据源就是一个集合. 根据需要会向集合中添加数据项,或是修改某些数据项的值,但DataGrid ...
- Jquery无刷新实时更新表格数据
html代码: <style> .editbox { display:none } .editbox { font-size:14px; width:70px; background-co ...
- Web网站数据”实时”更新设计
请注意这个实时打上了双引号,没有绝对的实时,只是时间的颗粒不一样罢了(1ms,1s,1m). 服务器数据有更新可以快速通知客户端.Web 基于取得模式,而服务器建立大量的和客户端连接来提供数据实时更新 ...
- 使用php+swoole对client数据实时更新(下)
上一篇提到了swoole的基本使用,现在通过几行基本的语句来实现比较复杂的逻辑操作: 先说一下业务场景.我们目前的大多数应用都是以服务端+接口+客户端的方式去协调工作的,这样的好处在于不论是处在何种终 ...
随机推荐
- DOS命令行(4)——Windows系统的配置与管理(上)
sfc --运行系统文件检查器(需要以管理员身份运行命令提示符) 命令格式:SFC [/SCANNOW] [/VERIFYONLY] [/SCANFILE=<file>] [/VERIFY ...
- Vue(5)计算属性computed
前言 一般情况下属性都是放到data中的,但是有些属性可能是需要经过一些逻辑计算后才能得出来,那么我们可以把这类属性变成计算属性.比如以下: <div id="example" ...
- 在element的table修改事件中修改数据,table的数据也会修改
大家在修改的时候有的会通过点击事件里面获取点击列表的值然后去赋值,但是row是Object对象类型,如果直接赋值的话,就变成了浅拷贝,复制的是地址,导致在表单中改变值的时候table中的数据也跟着改变 ...
- Unity_DOTween
DOTween官网 DG.Tweening.Ease枚举详解 2019.12.12补充: 问题:当前dotween动画没播放完,便再次播放有冲突的操作,如连续多次播放.正播.倒播,导致显示不正常或报错 ...
- cURL命令使用指南
cURL是什么 curl是Linux命令行工具,可以使用任何可支持的协议(如HTTP.FTP.IMAP.POP3.SCP.SFTP.SMTP.TFTP.TELNET.LDAP或FILE)在服务器之间传 ...
- 聊一聊我在 B 站自学 Java 的经历吧
Hey guys ,这里是 cxuan,欢迎你收看我最新一期的文章. 这是一篇鸽了很久的文章...... 事情还要从上回说起...... 我爱 B 站! 这篇文章我汇总了 B 站上计算机基础(操作系统 ...
- web自动化页面元素不能键盘输入
一.背景 web自动化中存在一部分元素属性是readonly属性,导致我们在使用自动化代码的时候无法使用sendkeys()方法传入数据,以12306网站选择出发日期为例,见下图 二.json语句处理 ...
- Netty 框架学习 —— UDP 广播
UDP 广播 面向连接的传输(如 TCP)管理两个网络端点之间的连接的建立,在连接的生命周期的有序和可靠的消息传输,以及最后,连接的有序终止.相比之下,类似 UDP 的无连接协议中则没有持久化连接的概 ...
- 0、springboot
在线新建springboot项目 https://start.spring.io/ 参考地址 https://github.com/battcn/spring-boot2-learning 博客 ht ...
- nginx开启tls1.2及一些注意问题
因为http传输是明文,通过抓包很容易获取到报文, 所以现在很多站点都开启了https,HTTPS在HTTP的基础上加入了SSL协议,对传输的数据进行加密. 目前主流的ssl协议是tlsv1.2 ng ...