`
dazhilao
  • 浏览: 245998 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

blazeds message filter 过滤消息——在聊天室的应用

    博客分类:
  • Flex
阅读更多
代码都是官方的,因为我在本地测试,所以得设置channelSet
   producer可以通过设置AsyncMessage的header 设置消息头
  cousumer可以通过设置selector来过滤消息(消息头中指定的消息),selector不写,说明不过滤,可以收到
写了,会跟消息头中的字段匹配,好像字符串不行如
message.headers["prop1"] = 10; //指定消息头 10不能是字符串
selector="prop1 = 10"   //可以用比较运算符 如:selector="prop1 >5"
如果不想接收某个信息,把selector设置为不匹配的如:selector="prop1 > 10"这样就接收不到消息。

这样就可以通过 过滤消息来 分组发 ,p2p ,发给所有人。(可能这样更复杂了,希望高人提出更简单的办法)

  producer_filter.mxml
<?xml version="1.0" encoding="utf-8"?>   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">   
<mx:Script>   
<![CDATA[   
    import mx.messaging.channels.AMFChannel;   
import mx.messaging.*;   
import mx.messaging.messages.*;   
import mx.messaging.events.*;   
private function sendMessage():void {   
init();   
  
var message:AsyncMessage = new AsyncMessage();   
message.headers = new Array();   
message.headers["prop1"] = 10; //指定消息头   
message.body = input.text;   
producer.send(message);   
}   
//设置channelSet   
private function init(){   
       
                var url="http://localhost:8400/BlazedsMessage/"; //随便的以个blazeds应用   
//              var myStreamingAMF:StreamingAMFChannel = new StreamingAMFChannel(url+"my-streaming-amf", url+"messagebroker/streamingamf");   
                var myPollingAMF:AMFChannel = new AMFChannel(url+"my-polling-amf", url+"messagebroker/amfpolling");   
                myPollingAMF.pollingEnabled = true;//轮询   
                myPollingAMF.pollingInterval = 1000;//隔多长时间询问一次 1miao   
                var channelSet:ChannelSet = new ChannelSet();   
//              channelSet.addChannel(myStreamingAMF);   
                channelSet.addChannel(myPollingAMF);   
                               
                producer.channelSet = channelSet;   
               
}   
]]>   
</mx:Script>   
<mx:Producer id="producer"  
destination="mychat">   
  
</mx:Producer>     
<mx:TextInput id="userName"/>   
<mx:TextInput id="input"/>   
<mx:Button label="Send"  
click="sendMessage();"/>   
</mx:Application>  

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
   <![CDATA[
		import mx.messaging.channels.AMFChannel;
		import mx.messaging.*;
		import mx.messaging.messages.*;
		import mx.messaging.events.*;
		private function sendMessage():void {
			init();var message:AsyncMessage = new AsyncMessage();
			message.headers = new Array();
			message.headers["prop1"] = 10; //指定消息头message.body = input.text;producer.send(message);}
			//设置channelSetprivate 
			function init(){var url="http://localhost:8400/BlazedsMessage/"; 
			//随便的以个blazeds应用
			var myStreamingAMF:StreamingAMFChannel = new StreamingAMFChannel(url+"my-streaming-amf", url+"messagebroker/streamingamf");
			var myPollingAMF:AMFChannel = new AMFChannel(url+"my-polling-amf", url+"messagebroker/amfpolling");
			myPollingAMF.pollingEnabled = true;//轮询
			myPollingAMF.pollingInterval = 1000;//隔多长时间询问一次 1miaovar 
			channelSet:ChannelSet = new ChannelSet();
			channelSet.addChannel(myStreamingAMF);
			channelSet.addChannel(myPollingAMF);
			producer.channelSet = channelSet;}
	]]>
</mx:Script>
<mx:Producer id="producer"destination="mychat">
</mx:Producer>  <mx:TextInput id="userName"/>
<mx:TextInput id="input"/>
<mx:Button label="Send"click="sendMessage();"/>
</mx:Application> 



Flex_consumer代码
<?xml version="1.0" encoding="utf-8"?>   
<!-- ds\messaging\CreateConsumerMXML.mxml -->   
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  
creationComplete="logon();">   
<mx:Script>   
<![CDATA[   
    import mx.messaging.channels.AMFChannel;   
import mx.messaging.*;   
import mx.messaging.messages.*;   
import mx.messaging.events.*;   
// Subscribe to destination.   
private function logon():void {   
    init();   
consumer.subscribe();//订阅   
}   
// Write received message to TextArea control.   
//收到信息   
private function messageHandler(event:MessageEvent):void {   
// Handle message event.   
ta.text += event.message.body + "\n";   
}   
  
private function init(){   
       
                var url="http://localhost:8400/BlazedsMessage/";   
//              var myStreamingAMF:StreamingAMFChannel = new StreamingAMFChannel(url+"my-streaming-amf", url+"messagebroker/streamingamf");   
                var myPollingAMF:AMFChannel = new AMFChannel(url+"my-polling-amf", url+"messagebroker/amfpolling");   
                myPollingAMF.pollingEnabled = true;   
                myPollingAMF.pollingInterval = 1000;   
                var channelSet:ChannelSet = new ChannelSet();   
//              channelSet.addChannel(myStreamingAMF);   
                channelSet.addChannel(myPollingAMF);   
                               
                consumer.channelSet = channelSet;   
               
}   
  
]]>   
</mx:Script>   
<mx:Consumer id="consumer"  
destination="mychat"  
selector="prop1 = 10"     
message="messageHandler(event);">   
  
<!--上边的selector可以改成 selector="prop1 > 9" 也能受到信息,说明可以用比较 官方文档也很少。郁闷-->   
       
</mx:Consumer>   
  
  
<mx:TextArea id="ta" width="100%" height="100%"/>   
</mx:Application>  
<?xml version="1.0" encoding="utf-8"?>
<!-- ds\messaging\CreateConsumerMXML.mxml --><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"creationComplete="logon();">
<mx:Script>
	<![CDATA[
		import mx.messaging.channels.AMFChannel;
		import mx.messaging.*;
		import mx.messaging.messages.*;
		import mx.messaging.events.*;// Subscribe to destination.
		private function logon():void {init();consumer.subscribe();//订阅
		}
		// Write received message to TextArea control.
		//收到信息
		private function messageHandler(event:MessageEvent):void {
			// Handle message 
			event.ta.text += event.message.body + "\n";
		}
		private function init(){var url="http://localhost:8400/BlazedsMessage/";//var myStreamingAMF:StreamingAMFChannel = new StreamingAMFChannel(url+"my-streaming-amf", url+"messagebroker/streamingamf");
		var myPollingAMF:AMFChannel = new AMFChannel(url+"my-polling-amf", url+"messagebroker/amfpolling");
		myPollingAMF.pollingEnabled = true;
		myPollingAMF.pollingInterval = 1000;
		var channelSet:ChannelSet = new ChannelSet();
		//channelSet.addChannel(myStreamingAMF);
		channelSet.addChannel(myPollingAMF);
		consumer.channelSet = channelSet;}
		]]>
		</mx:Script>
	<mx:Consumer id="consumer"destination="mychat"selector="prop1 = 10"  message="messageHandler(event);">
	<!--上边的selector可以改成 selector="prop1 > 9" 也能受到信息,说明可以用比较 官方文档也很少。郁闷-->
	</mx:Consumer><mx:TextArea id="ta" width="100%" height="100%"/>
</mx:Application> 



服务器端 message-config.xml
<?xml version="1.0" encoding="UTF-8"?>   
<service id="message-service"    
    class="flex.messaging.services.MessageService">   
  
    <adapters>   
        <adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" />   
        <!-- <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter"/> -->   
    </adapters>   
  
    <default-channels>   
        <channel ref="my-polling-amf"/>   
    </default-channels>   
    <destination id="mychat">   
           
    </destination>   
</service>  


<?xml version="1.0" encoding="UTF-8"?>
<service id="message-service"     class="flex.messaging.services.MessageService"> 
<adapters>      
<adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" />    
<!-- <adapter-definition id="jms" class="flex.messaging.services.messaging.adapters.JMSAdapter"/> --> 
</adapters>    <default-channels>  
<channel ref="my-polling-amf"/> 
</default-channels><destination id="mychat">
</destination></service> 

分享到:
评论

相关推荐

    基于Java_BlazeDS_Flex_服务器消息推的聊天室

    总之,通过Java BlazeDS Flex技术,我们可以构建一个高效、实时的聊天室应用,利用服务器推送实现消息的即时传递。这种方法不仅可以应用于聊天室,还可以扩展到股票交易、在线协作等实时应用场景。

    BlazeDS实现java后台消息推送flex前台接收的例子

    这种功能对于实时性要求高的应用,如股票交易、聊天室或者实时数据显示等场景非常有用。 在"BlazeDS实现java后台消息推送flex前台接收的例子"中,我们主要关注以下几个关键知识点: 1. **BlazeDS架构**:BlazeDS...

    blazeds4.7官方下载

    3. **数据推送**:与传统的HTTP请求不同,BlazeDS可以通过Long Polling、HTTP Streaming或WebSocket等技术实现服务器向客户端的主动数据推送,这在实时性要求高的应用如股票交易、聊天室或在线游戏等场景下非常有用...

    FLEX——blazeDS原理.pdf

    ### FLEX与BlazeDS原理概述...通过对FLEX与BlazeDS原理的深入探讨,我们可以看出这两种技术在构建高性能、安全可靠的应用程序方面具有显著优势。无论是对于开发者还是最终用户而言,了解这些基础知识都是非常有价值的。

    blazeds 的点对点的消息发布和订阅

    Blazeds是一个强大的Flex和Java之间的消息通信框架,由Adobe公司开发,主要用于构建富互联网应用程序(RIA)。在本文中,我们将深入探讨BlazDS的点对点(P2P)消息发布和订阅机制,这是一种允许应用程序之间直接交换...

    Spring整合Blazeds实现ActiveMQ JMS消息服务

    标题中的“Spring整合Blazeds实现ActiveMQ JMS消息服务”指的是在Java应用程序中使用Spring框架与Blazeds(一个Flex和Java之间的消息传递中间件)集成,通过ActiveMQ(一个流行的开源JMS提供商)来实现消息队列服务...

    flex+spring+blazeds消息推送

    标题中的“flex+spring+blazeds消息推送”是指在开发富互联网应用程序(RIA)时,采用Adobe Flex作为前端UI框架,Spring作为后端服务层框架,BlazeDS作为数据通信中间件,实现服务器到客户端的消息实时推送功能。...

    Flex+blazeds+java发布/订阅聊天程序(带java工程)

    Flex+BlazeDS+Java发布/订阅聊天程序是一种基于客户端-服务器架构的实时通信解决方案,它结合了Adobe Flex的用户界面构建能力、BlazeDS的数据服务功能以及Java后端的强大处理能力,实现了高效的聊天应用程序。...

    blazeds 3-0-0-544

    这种推送机制对于实时性要求高的应用非常有用,如股票交易、聊天室等。 4. **Services Configuration**:BlazeDS使用一个XML配置文件来定义服务,包括Remoting Destination、MessageBroker等,使得配置和管理变得...

    BlazeDS,PureMVC

    BlazeDS通信到Java的PureMVC——Flex框架,BlazeDS的服务器配置比较麻烦,这里使用的是直接下载blazeds_turnkey_3-0-0-544.zip中的tomcat BlazeDS模板路径为: blazeds_turnkey_3-0-0-544.zip解压后路径\tomcat\...

    关于blazeds应用的一个例子

    在本例中,我们将探讨如何使用Blazeds进行实际的应用开发。 首先,我们需要了解Flex,它是Blazeds的一部分,是一种基于MXML和ActionScript的开源框架,用于创建RIA。MXML是用于构建用户界面的标记语言,而...

    Flex 应用,BlazeDS通信

    4. LiveCycle Data Services (LCDS):虽然BlazeDS是基础版,但Adobe还提供了高级版本——LCDS,它包含更多企业级功能,如数据缓存、消息队列和高级事件广播。如果你需要这些特性,可能需要考虑升级到LCDS。 5. Flex...

    Flex+blazeds+java发布/订阅聊天程序

    在BusyChat这个聊天程序中,可能会包含用户登录界面、聊天室选择、聊天窗口、用户列表等功能组件。Flex通过 BlazeDS 与 Java 服务器通信,获取和发送聊天数据。 7. **数据传输**:AMF是一种高效的二进制序列化格式...

    消息推送 blazeds

    在实际应用中,消息推送常用于股票交易、在线聊天、实时通知等场景。BlazDS提供了灵活的配置选项和强大的消息处理能力,使其成为构建高性能、实时交互应用的理想选择。 总结一下,BlazDS的消息推送功能使得Flex应用...

    blazeds 服务器war包

    Blazeds是一款强大的Flex和Java之间的消息传递中间件,它由Adobe公司开发,主要用于构建富互联网应用程序(RIA)。本文将详细介绍Blazeds的核心概念、功能以及如何使用它。 Blazeds,全称BlazeDS,是Adobe Flex和...

    Spring BlazeDS Integration Spring集成BlazeDS

    **Spring BlazeDS Integration** 是一个强大的技术组合,它允许开发者使用Spring框架在后端服务器上进行业务逻辑处理,同时利用Adobe Flex在前端构建富互联网应用程序(RIA)。BlazeDS是Adobe提供的一种开源服务器端...

    Flex + BlazeDS + Java + JMS 通信实例(附源码)

    5. **消息模型**:在JMS中,有两种主要的消息模型——点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe)。点对点模型中,消息由一个生产者发送到队列,然后由一个消费者接收;发布/订阅模型中,消息由...

    Blazeds与java通信

    Blazeds是一个强大的Java服务器端技术,主要用于实现Flex(一种基于Adobe Flash的用户界面开发工具)与后端Java应用程序之间的数据交互。它提供了一个全面的解决方案,使开发人员能够构建富互联网应用程序(RIA),...

    BlazeDS的ppt课件讲解

    - **消息交换模式**:BlazeDS在客户端和服务器之间使用两种主要的交换模式——请求-响应模式和发送-订阅模式。请求-响应模式用于RPC服务,而发送-订阅模式则被消息服务所采用。这两种模式分别适用于不同类型的应用...

Global site tag (gtag.js) - Google Analytics