草原图片:校内网基于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
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偷偷的放进了
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穿越不了防火墙和代理~