服务器推送3.0时代来临 HTML5Socket如何实现?
(资料图)
传统模式的Web系统以客户端发出请求、服务器端响应的方式工作。不能满足很多现实应用的需求,譬如:
监控系统:后台硬件温度、电压发生变化; 即时通信系统:其它用户登录、发送信息; 即时报价系统:后台数据库内容发生变化; 即时信息系统:微博、说说实时推送
目前主流的是采取如下几种方式来实现以上需求:
Ajax轮询:异步响应机制,即通过不间断的客户端 Ajax 请求,去发现服务端的变化。这种方式由于是客户端主动连接的,所以会有一定程度的延时,并且服务器的压力也不小。 长轮询:原理是客户端发出一个http长连接请求,然后等待服务器的响应,服务器接到请求之后,并不立即发送出数据,而是hold住这个Connecton。这个处理是非阻塞的,所以服务器可以继续处理其他请求。在某个时刻,比如服务器有新数据了,服务器再主动把这个消息推送出去,即通过之前建立好的连接将数据推送给客户端。客户端收到返回。这个时候就可以处理数据,然后再次发起新的长连接。服务器压力一般,实时性很高。Servlet 3.0开始已经支持该技术。sina微博就是使用的原生Servlet 3实现的消息推送。 套接字:可以利用 Flash 的 XMLSocket 类或者 Java 的 Applet 来建立 Socket 连接,实现全双工的服务器推送,然后通过 Flash 或者Applet 与 JavaScript 通信的接口来实现最终的数据推送。但是这种方式需要 Flash 或者 JVM 的支持,同样不太合适于终端用户。 HTML5的WebSocket:这种方式其实与套接字一样,但是这里需要单独强调一下:它是不需要用户而外安装任何插件的。HTML5 提供了一个 WebSocket 的 JavaScript 接口,可以直接与服务端建立Socket 连接,实现全双工通信,这种方式的服务器推送就是完全意义上的服务器推送了,没有半点模拟的成分,只是现阶段支持 HTML5 的浏览器并不多,而且一般老版本的各种浏览器基本都不支持。不过 HTML5 是一套非常好的标准,在将来,当HTML5 流行起来以后将是我们实现服务器推送技术的不二选择。
Ajax轮训压力大,套接字不适用,HTML5目前支持不大多,这样看来长轮询是我们的必然之选。 可是使用 servlet 3 实现自己要做的事很多。没有有什么可供选择的框架呢?当然是有了,如下:
1、Cometdhttp://cometd.org/基于Bayeux协议实现,支持长轮询、WebSocket等.. 2、Pushlethttp://www.pushlets.com/基于HTTP流的JSP/Semlet技术实现 3、Atmospherehttp://atmosphere.java.net/ 4、DWRhttp://directwebremoting.org/dwr/index.html
所谓长连接,就是要在客户端与服务器之间创建和保持稳定可靠的连接。其实它是一种很早就存在的技术,但是由于浏览器技术的发展比较缓慢,没有为这种机制的实现提供很好的支持。所以要达到这种效果,需要客户端和服务器的程序共同配合来完成。通常的做法是,在服务器的程序中加入一个死循环,在循环中监测数据的变动。当发现新数据时,立即将其输出给浏览器并断开连接,浏览器在收到数据后,再次发起请求以进入下一个周期,这就是常说的长轮询(long-polling)方式。如下图所示,它通常包含以下几个关键过程:
1. 轮询的建立 建立轮询的过程很简单,浏览器发起请求后进入循环等待状态,此时由于服务器还未做出应答,所以HTTP也一直处于连接状态中。 2. 数据的推送 在循环过程中,服务器程序对数据变动进行监控,如发现更新,将该信息输出给浏览器,随即断开连接,完成应答过程,实现“服务器推”。 3. 轮询的终止 轮询可能在以下3种情况时终止:3.1. 有新数据推送 当循环过程中服务器向浏览器推送信息后,应该主动结束程序运行从而让连接断开,这样浏览器才能及时收到数据。 3.2. 没有新数据推送 循环不能一直持续下去,应该设定一个最长时限,避免WEB服务器超时(Timeout),若一直没有新信息,服务器应主动向浏览器发送本次轮询无新信息的正常响应,并断开连接,这也被称为“心跳”信息。3.3. 网络故障或异常 由于网络故障等因素造成的请求超时或出错也可能导致轮询的意外中断,此时浏览器将收到错误信息。 4. 轮询的重建 浏览器收到回复并进行相应处理后,应马上重新发起请求,开始一个新的轮询周期。
标签:
相关推荐:
最新新闻:
- 世界热点!NERO8注册码序列号 手工验证NERO7序列号的方法
- 189邮箱怎么发短信?189免费发短信的方法
- 电脑的显示器是什么?如何选择合适的电脑显示器?
- 小程序开发哪家更靠谱?如何选择一个靠谱的小程序开发团队? 天天热讯
- xml格式详解 xml与操作系统的基础详解-天天时讯
- 电磁阀有什么作用?电磁阀的作用与原理|每日热门
- 什么是蜂窝移动网络?为什么移动数据覆盖性比WIFI好?:讯息
- win10系统自带清除磁盘垃圾工具———磁盘清理工具|播资讯
- 西安哪些大专院校计算机专业好?西安的大学计算机专业排名
- 当前视点!导电滑环的型号有哪些?能有多久使用寿命?
- pinterest是什么?pinterest打不开的解决方法
- 如何下载网页视频?怎么下载手机网页视频?
- Apache文件上传组件的核心类——DiskUpload类
- win10系统jqs.exe是什么进程?jqs.exe进程描述及关闭方法
- repeater控件如何实现分页排序?repeater控件实现分页
- 出现此选项卡已经恢复是怎么回事?解决办法
- 怎么用win10制作iso镜像文件?win10制作iso镜像文件的步骤
- 桌面回收站不见了怎么办?Win10桌面的回收站不见了的解决方法
- oppor11什么时候上市的?oppo怎么强制恢复出厂设置?
- 自定义支付时的密码输入框是什么?自定义密码支付页面 精选
- Portraiture是什么软件?Portraiture注册码及使用方法
- 尼康D40X相机好用吗?如何调整尼康D40X相机参数?
- 电脑如何卸载ie9浏览器?卸载ie9浏览器的方法
- 【环球新要闻】什么是php递归算法?PHP递归算法实例解析
- 世界快报:《哈利·波特》全新衍生游戏公布!魁地奇来啦
- 3dmax如何设置漫反射的颜色?3dmax如何设置漫反射的光泽度?
- 天天新动态:windows732bit开机蓝屏怎么办?windows73232bit蓝屏信息汇总
- win7如何格式化C盘?格式化C盘的方法步骤
- 服务器推送3.0时代来临 HTML5Socket如何实现?
- DNF称号宝珠有哪些?分享DNF称号宝珠大全
- oppo手机的语音助手在哪里打开?OPPO手机的语音助手介绍
- 如何在Android手机上格式化SD卡?这篇文章告诉你|观天下
- 百度一键Root应该怎么使用?百度一键root的七个步骤使用教程
- 小蚁运动相机是什么相机?手机APP还是必备的?:世界快消息
- 云服务器优势差别?三大主流云平台对比
- 域名前缀和域名后缀具体指什么?域名到底带不带www?
- 赛酷ocr破解版功能介绍 赛酷ocr怎么识别公式?
- 索伊冰箱质量怎么样?品牌知识简单介绍|全球看点
- 最资讯丨不会跑代码怎么办?python3的代码帮你解决
- 眼睛干涩、视力下降怎么办?显示器亮度调节软件推荐 世界播资讯
- 电子商务主要学什么?电子商务一门综合类学科学习内容有哪些? 全球观天下
- 什么是跨境电商ERP系统?跨境业务贴心管家
- 【环球时快讯】如何获取qq空间图片的url?获取方法步骤
- 全球即时看!打印机打印状态提示“出错”是什么意思?怎么解决?
- 当前短讯!U盘无法打开怎么办?如何修复U盘丢失的数据?
- 如何在电脑桌面上添加文字提醒?教你一个简单实用的方法:天天简讯
- 高主频的N79和高能效的N82哪个更好用?两者评测 世界速讯
- 三星s5830i怎么刷机?三星s5830i详细刷机教程:当前热文
- 环球今热点:word怎么去除页眉横线?简单使用的方法
- 全球播报:巴法络路由器怎么样?巴法络无线路由器WHR-GN-HP评测
- 当前短讯!U盘无法打开怎么办?如何修复U盘丢失的数据?
- 怎么看懂NARS的生产日期?NARS的生产日期保质期批号怎么看?
- 【当前独家】刺客信条4黑旗黑屏无响应闪退怎么办?解决方案
- 精选!为什么手机信号是满格但上网速度很慢?原因分析
- 速讯:【系统制作】戴尔DELLOEMWin7SP1简体中文旗舰版
- 三阶魔方开发孩子智力的方法?3阶魔方顶层还原图解 视点
- 世界新资讯:如何删除地址栏中的URL?删除IE地址栏的两种方法
- linux上支持的3G上网卡怎么用?3G上网卡使用方法
- 尼康D40X相机好用吗?如何调整尼康D40X相机参数?
- 电脑如何卸载ie9浏览器?卸载ie9浏览器的方法
- win7如何格式化C盘?格式化C盘的方法步骤
- DNF称号宝珠有哪些?分享DNF称号宝珠大全
- 百度一键Root应该怎么使用?百度一键root的七个步骤使用教程
- 域名前缀和域名后缀具体指什么?域名到底带不带www?
- 赛酷ocr破解版功能介绍 赛酷ocr怎么识别公式?
- 参数错误是什么意思?通常是哪些原因导致的?
- 搜苹果安装失败如何解决?问题原因及解决方法介绍
- xda助手是什么?xda助手有什么作用?
- win7待机时间在哪里设置?待机时间设置方法步骤
- ios7发布时间是什么时候?ios7支持机型有哪些?
- 一天7个瓜!男星为户口陪睡男大佬,叔圈顶流潜规则女演员
- 曝Tango Gameworks目前有两个项目在开发 其中之一为JRPG|天天快资讯
- 大熊猫暖暖被饲养员用竹竿打 园方回应:永不允许此人养熊猫
- 焦点消息!被疯狂“种草”的布艺清洗机到底“香不香”?
- 马来西亚国旗的含义(马来西亚国旗)-世界视讯