百度HI,webqq,等网页聊天室的实现技术!

发布网友

我来回答

2个回答

热心网友

可能用的是AJAX技术
如果按你说的话 不刷新应该是用的P2P技术
P2P网络通常用于通过Ad Hoc连接来连接节点。这个可以用于多种用途,各种档案分享软件已经得到了广泛的使用。P2P技术也被使用在类似VoIP等实时媒体业务的数据通信中。

下面有一段文字供你参考
首先webqq没是使用flash作为长连接代理。
其使用了yahoo的ajax工具包。

使用中,20秒进行一次http://web-proxy.qq.com/conn_s POST请求,内容为:

HTTP/1.1 200 Ok
Content-Type: text/html; charset=UTF-8
Cache-Control: private
Server: QQ/J.vn
Content-Length: 0

20秒一次,并且内容为空,的POST,这个应该是判断用户离线使用的。而并非取得任何新数据。

比较奇怪的,任何一个用户发信息给正在使用WEBQQ的用户,立刻WEBQQ用户会自己,主动的发起一次对 http://web-proxy.qq.com/conn_s POST请求
来获得新的聊天内容数据,内容如下:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: private
Server: TENCENT_HTTP_Server
Content-Length: 68

1034456174;17;3088;313033262;275062;09;0b;test123;1241812821;575540857;

聊天内容是test123,可以看到并未进行加密之类,不过这不再本文讨论范围,
我想知道的是,WEB QQ是如何即时的获得有信息到来的这个“通知”让客户端主动的去发起请求去服务器获取数据?

我过了一遍代码,绝不是简单的轮询之类,因为没有任何延迟,如果是轮询总会有延迟。而且看链接状态也没有显式的长连接。

他页面上有4个iframe

<iframe id="conn_frame1" name="conn_frame1" src="http://web-proxy.qq.com" style="display:none;"> </iframe>
<iframe id="conn_frame2" name="conn_frame2" src="http://web-proxy2.qq.com" style="display:none;"> </iframe>
<iframe id="chatlog" name="chatlog" src="" style="display:none;"> </iframe>
<iframe id="filelog" name="filelog" src="" style="display:none;"> </iframe>

应该是以某个iframe以某种方法与服务器保持连接,这是如何实现的?
如何“通知”让客户端主动的去发起请求去服务器获取数据?

请到web.qq.com看一下实现后进行讨论~
来自http://www.iqidi.com/Articles/2009-12-25%23374.htm可以去看看

还有一种说法是comet技术
见下网址http://www.ibm.com/developerworks/cn/web/wa-lo-comet/

热心网友

comet技术。叫做服务器推技术。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com