做完WEB旺旺,一直想写点关于WEB旺旺轮询关于前端消息的通知的处理的介绍,今天整理了一下:
前端处理方法:
1、一般前端的长连接处理方式是:
浏览器开三个页面,即使现在的focus页在C,但是还是建立了3个Comet接,当服务端有消息时间,三份同时从3个Comet写回浏览器,此时展示给用户的提示信息是只需求出现在C页面就可以了,A,B并不是focus页,这个Comet链接实际的数据是无意义的。
优点:
a)、消息失时,速度快。
缺点:
a)、Comet链接数与PV量成正比,量很大。
2、Web旺旺前端的处理方式 :
三个页面只有A是主页面去建一个到WebServer的Comnet链接,服务端的消息更新通知有新消息数据,写到Cookie中。
当任何一个部署了前端JS页面获取focus时写一个时间戳T1到Cookie。Focus页C 800ms检查Cookie是否有新的消息,有新的消息发一个普通的Http请求到消息服务器上取到消息内容。
当C失去Focus时候写入一个时间戳T2到Cookie 中,同时把时间戳写到内存变量T3中,800ms检查新消息的时同时检查Cookie时间T2和内存中T3时间是否相等。
任何获取Focus页的写入时间戳T1在改变了存在Cookie中的时间戳T2,800ms检查时间戳时,两个不相等停止轮询本地Cookie。这样可以保证用户焦点没有在网页上时,最后一个失去focus的页,可以正常收到消息。
如何保存一直都有一个Comet存在,用户关掉Comet页处理,Comet页一直会写一个时间戳到Cookie中,所有部署JS页在一个时间如3S检查这个时间戳是否有更新,有更新说明Comet页存在,没有更新说明Comet不存在。要新建一个Comet到WebServer
优点:
a)、链接数比一个页一个长边接少,和UV成正比。
b)、轮询根据focus页切换,只有一个页面要轮询本地cookie,800ms完全可以接受。
缺点:
a)、本地是轮询Cookie有延时。
b)、只能推送通知,要取2次才能取正真实的消息。
c)、当Comet页关掉的时候,要重新建立时有延时。
4核心的CPU,4内存,32位系统,只测试长连接,30S断开一次:压力测试到4万。
现在淘宝的PV量来计划所有部署WEB旺旺的页面建一个Comet是行不通的,用Cookie本地信息共享,是可以解决这一问题的。
- 大小: 6.8 KB
- 大小: 16.9 KB
分享到:
相关推荐
demo是采用comet的web推送技术,使用tomcat7做服务器,内含tomcat7上面配置说明,在MyEclipse、tomcat7上面完美运行,本人亲测!
使用Comet技术实现HTML长连接,对Comet框架进行了一定的封装,允许对发送的结果进行自定义扩展,并实现Web即时通讯的例子
pushlet 和comet 资料介绍 介绍如何从服器端push subscrite 给浏览器
Servlet3.0 异步处理 页面推送 Comet 实例
Comet是一种用于web的技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和流。
Comet_的_Web_应用,关于comet的介绍,还算可以啦!
浅析Comet技术在Java Web实时系统开发中的应用.docx浅析Comet技术在Java Web实时系统开发中的应用.docx浅析Comet技术在Java Web实时系统开发中的应用.docx浅析Comet技术在Java Web实时系统开发中的应用.docx浅析...
浅析Comet技术在Java Web实时系统开发中的应用.pdf浅析Comet技术在Java Web实时系统开发中的应用.pdf浅析Comet技术在Java Web实时系统开发中的应用.pdf浅析Comet技术在Java Web实时系统开发中的应用.pdf浅析Comet...
Comet4J可运行样例,web页面刷新框架
DWR+JAVA进行web消息推送dwr-comet.zip
DWR comet 多人web聊天例子。
tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不刷新显示。tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不刷新显示。tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不...
通过tomcat服务器,向网页发送即时消息。comet的小例子,可以直接运行,用tomcat6.0。
一个简单的comet实现的例子程序,就是comet实现长链接,反向ajax实现
comet 很好的一个实例 var ajax = new Ajax.Request(WebApp._url_, { method: 'get', parameters: { 'timestamp' : WebApp._timestamp_ }, onSuccess: function(transport) { var response = ...
comet4j,comet4j实例,实例代码,可直接运行
comet框架例子项目,自己写的一个参考例子供大家学习
Comet4J是一个微型的即时推送框架,它分为服务端与客户端两部分,你只要将服务器端(JAR文件,目前仅支持Tomcat6、7)放入WEB-INF\lib,客户端(JavaScript文件)引入到页面,那么你的应用就具备了向客户端推送信息的...
comet4j完整包、comet4j.js、comet4j-tomcat6.jar、comet4j-tomcat7.jar
在很多Web应用系统中,都需要将服务器端的最新数据实时地发送到客户端,而不需要客户端不停刷新、发送请求。传统Web模式和Ajax模式...介绍了Comet技术的相关原理及实现,并运用该技术对一个简单无刷新聊天室进行了实现。