`
zhoujm
  • 浏览: 11150 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

WEB旺旺前端处理Comet链接介绍

阅读更多

做完WEB旺旺,一直想写点关于WEB旺旺轮询关于前端消息的通知的处理的介绍,今天整理了一下:

 

前端处理方法:

1、一般前端的长连接处理方式是:

 

 

浏览器开三个页面,即使现在的focus页在C,但是还是建立了3Comet接,当服务端有消息时间,三份同时从3Comet写回浏览器,此时展示给用户的提示信息是只需求出现在C页面就可以了,AB并不是focus页,这个Comet链接实际的数据是无意义的。

优点:

         a)、消息失时,速度快。

缺点:

         a)Comet链接数与PV量成正比,量很大。

 

 

2Web旺旺前端的处理方式



 

三个页面只有A是主页面去建一个到WebServerComnet链接,服务端的消息更新通知有新消息数据,写到Cookie中。

当任何一个部署了前端JS页面获取focus时写一个时间戳T1CookieFocusC 800ms检查Cookie是否有新的消息,有新的消息发一个普通的Http请求到消息服务器上取到消息内容。

C失去Focus时候写入一个时间戳T2Cookie ,同时把时间戳写到内存变量T3中,800ms检查新消息的时同时检查Cookie时间T2和内存中T3时间是否相等。

任何获取Focus页的写入时间戳T1在改变了存在Cookie中的时间戳T2800ms检查时间戳时,两个不相等停止轮询本地Cookie。这样可以保证用户焦点没有在网页上时,最后一个失去focus的页,可以正常收到消息。

 

如何保存一直都有一个Comet存在,用户关掉Comet页处理,Comet页一直会写一个时间戳到Cookie中,所有部署JS页在一个时间如3S检查这个时间戳是否有更新,有更新说明Comet页存在,没有更新说明Comet不存在。要新建一个CometWebServer

优点:

         a)、链接数比一个页一个长边接少,和UV成正比。

         b)、轮询根据focus页切换,只有一个页面要轮询本地cookie800ms完全可以接受。

缺点:

         a)、本地是轮询Cookie有延时。

b)、只能推送通知,要取2次才能取正真实的消息。

         c)、当Comet页关掉的时候,要重新建立时有延时。

 

4核心的CPU,4内存,32位系统,只测试长连接,30S断开一次:压力测试到4万。

现在淘宝的PV量来计划所有部署WEB旺旺的页面建一个Comet是行不通的,用Cookie本地信息共享,是可以解决这一问题的。

 

 

 

  • 大小: 6.8 KB
  • 大小: 16.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics