`

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

阅读更多

代码都是官方的,因为我在本地测试,所以得设置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>

   consumer_filter.mxml

<?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>

 我不能回复,回答了15道问题,10道错误,回帖那人你说的对的  selector="prop1 > 9 ;

prop1>9是个sql表达式 意思是你还可以 这样between and

 

分享到:
评论
3 楼 javaEEdevelop 2011-04-07  
弄了半天,也没弄出来,你的对不,杯具啊
2 楼 fykyx521 2009-05-17  
whaosoft 写道

selector="prop1 = 10"&nbsp;&nbsp; //可以用比较运算符 如:selector="prop1 &gt;5" 如果不想接收某个信息,把selector设置为不匹配的如:selector="prop1 &gt; 10"这样就接收不到消息。 这样就可以吗??

答了半个小时发帖答案,终于可以了?? 
1 楼 whaosoft 2009-05-10  
selector="prop1 = 10"   //可以用比较运算符 如:selector="prop1 >5"

如果不想接收某个信息,把selector设置为不匹配的如:selector="prop1 > 10"这样就接收不到消息。



这样就可以吗??

相关推荐

    基于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提供的一种开源服务器端...

    Blazeds与java通信

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

    FLex与Java交互必备blazeds

    在Blazeds中,Flex客户端通过AMF(Action Message Format)协议与Java后端通信。AMF是一种二进制的序列化格式,它比XML或JSON等文本格式更高效,能快速传输复杂的数据结构。Blazeds提供了Flex和Java之间的AMF编解码...

    flex 工具 blazeds

    在实际应用中,我们需要配置BlazeDS的`services-config.xml`文件来定义服务、通道和消息目的地。这个配置文件控制了哪些Java类暴露给Flex客户端,以及数据如何在客户端和服务器之间传输。 6. **部署BlazeDS** `...

Global site tag (gtag.js) - Google Analytics