天天看点

aflax入门

关键字: 页面 长连接

RIA应该是近些年比较热门的web技术,譬如flex应用就已经相当的多。就网站开发而言,笔者比较喜欢flex能和后台服务器保持一个长链接的特性,在此基础上可以做很多扩展性的应用。但是众所皆知,flex本身有着加载速度慢等诸多缺点。为了扬长避短,于是有了 aflax。

在baidu百科上:

引用 AFLAX是'A JavaScript Library for Macromedia's Flash™ Platform'的略称。

实际上我们可以认为 aflax是将flex和ajax结合的一种web应用。

socket

本身来说 aflax有着复杂且多样的功能,不过我们之前也说了,这里主要谈的还是在页面上保持一个长链接的应用。闲话不多说,上代码:

前端:

Html代码

aflax入门
  1. <script type="text/javascript" src="js/lib/AFLAX/aflax.js"></script>  
  2. <script type="text/javascript">  
  3.     var aflax = new AFLAX("js/lib/AFLAX/aflax.swf");    
  4.     var connection = null;    
  5.     function go(){   
  6.         connection = new AFLAX.Socket(aflax, "127.0.0.1", 7777,    
  7.                 "onConnectEvent", "onDataEvent", "onCloseEvent");              
  8.     }   
  9.     function onConnectEvent(val)     
  10.     {     
  11.         console.info(val);   
  12.     }     
  13.     function onDataEvent(str)     
  14.     {     
  15.         console.info(str);    
  16.     }     
  17.     function onCloseEvent()     
  18.     {     
  19.         console.info("the connection is already closed");    
  20.     }   
  21.     function go1(){   
  22.     }   
  23. </script>  
<script type="text/javascript" src="js/lib/AFLAX/aflax.js"></script>
	<script type="text/javascript">
		var aflax = new AFLAX("js/lib/AFLAX/aflax.swf"); 
		var connection = null; 
		function go(){
			connection = new AFLAX.Socket(aflax, "127.0.0.1", 7777, 
					"onConnectEvent", "onDataEvent", "onCloseEvent"); 			
		}
	
		function onConnectEvent(val)  
	    {  
			console.info(val);
	    }  
	      
	    function onDataEvent(str)  
	    {  
	    	console.info(str); 
	    }  
	      
	    function onCloseEvent()  
	    {  
	    	console.info("the connection is already closed"); 
	    }
	    function go1(){
	    }
	</script>
           

引入的 aflax.js见附件

这里的js代码并不复杂

var aflax = new AFLAX("js/lib/ AFLAX/ aflax.swf");

建立一个名为 aflax的swf

connection = new AFLAX.Socket( aflax, "127.0.0.1", 7777,

"onConnectEvent", "onDataEvent", "onCloseEvent");

利用我们之前建立的swf,生成socket连接。几个参数分别是swf、服务器地址、服务器端口、连接事件监听、通信事件监听、关闭事件监听。鉴于 aflax官方文档算不上详细,初始化连接的时候可以以我们的例子为准。

几个监听器我并没有做复杂处理,只是简单的在firebug中输出结果。

后台:

后台代码只是一个很基本的serversocket,之前用 aflax做的一个网站聊天系统时,我们选用了xsocket和mina两套服务器socket方案,可供参考。

应用

现在来简单说一下 aflax有什么用

应该来说,现在网站前端后台交互非常频繁,以异步读取为主要卖点的ajax本身也是为此而生。不过ajax并不完美,他是单方向的读取,也就是仅仅局限于客户端主动向服务器请求。虽然这个问题,也有不少解决方案,比如定时读取、服务器推技术,但要不及时性差、要不实现复杂。另外当前后台交互过于频繁时,ajax不断的做http请求也会造成极大的压力。

aflax对于这一问题就是很好的解决方案,上面简单几行代码就建立了一个前后台之间的长链接。基于socket,及时性不再是问题。

事实上,我们周围的很多网站都大量运用了 aflax技术。比如校内网,页面底部的聊天机制就是最典型的 aflax应用,另外在新鲜事应用上,也利用 aflax做到了及时更新的特点。

其他

没有十全十美的事物, aflax就不能再没有flash的浏览器中运行。另外笔者不认为 aflax可以完全取代ajax,两者在某些方面完全可以配合使用。

最后附上 aflax官网

http://www. aflax.org/

继续阅读