草原图片:校内网基于aflax的推技术简要分析

来源:百度文库 编辑:九乡新闻网 时间:2024/10/04 03:50:54

这几天看很多人玩校内网的游戏,对其后台服务器推技术产生了巨大兴趣~于是抓代码研究,发现使用了 flash的xmlsocket与js结合的方法。于是google一下。找到了www.aflax.org,大体架构如下(仅仅推技术层面,其他架构不予考虑):
aflax会构建一个aflax.swf,然后由aflax.js 控制aflax.swf 建立xmlsocket通道。数据的接受由服务器从xmlsocket推向swf。而swf收到后,跟aflax.js通信处理。
研究一个简单的chat例子吧,这是官网提供的一个例子,我们慢慢研究

1. 
2.2  
3.3  
4.4  
5.5 AFLAX: A JavaScript Library for Macromedia's Flash™ Platform 
6.6  
7.7  
8.8  
9.9  
10.10  
11.11  
12.12  
74.74  
75.75  
复制代码
看13行, var aflax = new AFLAX("../../lib/AFLAX/aflax.swf");  构建一个Aflax对象,传递了swf,
162        

 
163          
164          
167      
168        


在165行,因为是一个chat,并没有用swf,就只是把aflax偷偷的放进了

里,并且回调函数是go。
62行:
         connection = new AFLAX.Socket(aflax, "www.aflax.org", 7777,  
63             "onConnectEvent", "onDataEvent", "onCloseEvent"); 
建立了一个socket链接,自己看看js里面,实际上建立的是一个xmlsocket,还有三个回调函数,用于处理链接事件,收到数据事件,和关闭事件。
好了,我们来发一下信息

function send(str) 
46     { 
47         connection.send(username + ': ' + str); 
48     } 

js会把信息控制swf发出去,然后,收到后:
  function onDataEvent(str) 
31     { 
32         var i = str.indexOf(":"); 
33         var name = str.substring(0, i); 
34         var rest = str.substring(i+1); 
35         var color = "blue"; 
36         if(name == username) color = "red"; 
37         appendData("" + name + ': ' + rest); 
38     } 

回调函数调用了appendData
var chat = document.getElementById("chat"); 
69         chat.innerHTML += str + "
"; 
70         chat.scrollTop = chat.scrollHeight - chat.clientHeight; 
控件刷新一下页面就行了。这样一个chat就完成了。
自己写个xmlsocket测试一下吧,记得xmlsocket穿越不了防火墙和代理~