Flex producer-consumer 模式 示例

flex有两种传输模式 request-response模式和producer-consumer模式。http,webservice,rpc采用前者,消息采用后者。

《blazeDS Developer Guide》中给出了例子,我稍加改造,做了个聊天室。测试显示,这种方式的速度不容乐观。没有加缓冲池,不知道加了会不会能有改善。

 

chatTest.html代码:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="logon();" height="432" width="686" borderColor="#141616">
<mx:Script>
<![CDATA[
	import mx.messaging.messages.*;
	import mx.messaging.events.*;
	
	private function logon():void {
		consumer.subscribe();
	}
	private var begintime:Date;
	private var endtime:Date;
	
	private function messageHandler(event: MessageEvent):void {
		ta.text += event.message.body;
		endtime=new Date();
		var elapse:Number=endtime.valueOf()-begintime.valueOf();
		ta.text+=" --耗时:"+elapse+" 毫秒" + "\n";
	}
	private function sendMessage():void {
		var message: AsyncMessage = new AsyncMessage();
		message.body = userName.text + ": " + msg.text;
		producer.send(message);
		msg.text = "";
		begintime=new Date();
	}
]]>
</mx:Script>

<mx:Producer id="producer" destination="marschat"/>
<mx:Consumer id="consumer" destination="marschat" message="messageHandler(event)"/>

<mx:TextArea id="ta" width="640" height="231" x="13.5" y="37" fontSize="12" fontFamily="Times New Roman" color="#DF1500"/>
<mx:TextInput id="userName" x="100" y="275" width="200" fontWeight="bold" text="Eric Han"/>
	<mx:Label text="UserName" x="10" y="275" width="80" color="#EEF5F6" fontWeight="bold"/>
	<mx:Label text="message" x="10" y="320" width="80" color="#EEF5F6" fontWeight="bold"/>
	<mx:TextInput id="msg" width="546" x="98" y="318" />

<mx:Button label="Send" click="sendMessage();" x="318.5" y="377"/>
</mx:Application>

 

messaging-config.xml配置文件加入:

<destination id="marschat" channels="my-polling-amf" />

 

启动服务器(我的是tomcat),输入地址:http://localhost:8888/GoNow/chatTest.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值