腾讯WebQQ聊天架构分析1

有言在先:WebQQ页面的代码量很大,限于精力只能分析局部,限于水平可能分析有误,有兴趣者可以一起讨论,共同学习!

一、WebQQ的客户端技术

1. 跨域的长轮询ajax

WebQQ使用长轮询ajax来接收即时信息。

跨域的实现是在主页面中嵌入隐藏的iframe帧,并在该iframe文件中的head中嵌入ajax/js代码,实现通讯调用,对于iframe中ajax因为完全同源也就不存在跨域问题,而iframe和主页只是跨子域,使用脚本document.domain = 'qq.com'即可解决。

 

iframe中的ajax使用了Yahoo的YUI库(YUI.Connect/http://developer.yahoo.com/yui/docs/connection.js.html)并稍加修改,代码进行了压缩,并进行了变量名替换!

 

点评:如果在主页中直接使用ajax虽然没有了跨域问题,但是聊天服务器要做稍微复杂一些的负载平衡而且效果也未必好;而使用嵌入的iframe,负载平衡就简单很多,例如:http://web-proxy14.qq.com (其中的14应该是服务器的编号),在线人数增多,直接添加服务器就可以。另一个优点就是避免了浏览器连接数的限制。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值