代码都是官方的,因为我在本地测试,所以得设置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技术,我们可以构建一个高效、实时的聊天室应用,利用服务器推送实现消息的即时传递。这种方法不仅可以应用于聊天室,还可以扩展到股票交易、在线协作等实时应用场景。
这种功能对于实时性要求高的应用,如股票交易、聊天室或者实时数据显示等场景非常有用。 在"BlazeDS实现java后台消息推送flex前台接收的例子"中,我们主要关注以下几个关键知识点: 1. **BlazeDS架构**:BlazeDS...
3. **数据推送**:与传统的HTTP请求不同,BlazeDS可以通过Long Polling、HTTP Streaming或WebSocket等技术实现服务器向客户端的主动数据推送,这在实时性要求高的应用如股票交易、聊天室或在线游戏等场景下非常有用...
### FLEX与BlazeDS原理概述...通过对FLEX与BlazeDS原理的深入探讨,我们可以看出这两种技术在构建高性能、安全可靠的应用程序方面具有显著优势。无论是对于开发者还是最终用户而言,了解这些基础知识都是非常有价值的。
Blazeds是一个强大的Flex和Java之间的消息通信框架,由Adobe公司开发,主要用于构建富互联网应用程序(RIA)。在本文中,我们将深入探讨BlazDS的点对点(P2P)消息发布和订阅机制,这是一种允许应用程序之间直接交换...
标题中的“Spring整合Blazeds实现ActiveMQ JMS消息服务”指的是在Java应用程序中使用Spring框架与Blazeds(一个Flex和Java之间的消息传递中间件)集成,通过ActiveMQ(一个流行的开源JMS提供商)来实现消息队列服务...
标题中的“flex+spring+blazeds消息推送”是指在开发富互联网应用程序(RIA)时,采用Adobe Flex作为前端UI框架,Spring作为后端服务层框架,BlazeDS作为数据通信中间件,实现服务器到客户端的消息实时推送功能。...
Flex+BlazeDS+Java发布/订阅聊天程序是一种基于客户端-服务器架构的实时通信解决方案,它结合了Adobe Flex的用户界面构建能力、BlazeDS的数据服务功能以及Java后端的强大处理能力,实现了高效的聊天应用程序。...
这种推送机制对于实时性要求高的应用非常有用,如股票交易、聊天室等。 4. **Services Configuration**:BlazeDS使用一个XML配置文件来定义服务,包括Remoting Destination、MessageBroker等,使得配置和管理变得...
BlazeDS通信到Java的PureMVC——Flex框架,BlazeDS的服务器配置比较麻烦,这里使用的是直接下载blazeds_turnkey_3-0-0-544.zip中的tomcat BlazeDS模板路径为: blazeds_turnkey_3-0-0-544.zip解压后路径\tomcat\...
在本例中,我们将探讨如何使用Blazeds进行实际的应用开发。 首先,我们需要了解Flex,它是Blazeds的一部分,是一种基于MXML和ActionScript的开源框架,用于创建RIA。MXML是用于构建用户界面的标记语言,而...
4. LiveCycle Data Services (LCDS):虽然BlazeDS是基础版,但Adobe还提供了高级版本——LCDS,它包含更多企业级功能,如数据缓存、消息队列和高级事件广播。如果你需要这些特性,可能需要考虑升级到LCDS。 5. Flex...
在BusyChat这个聊天程序中,可能会包含用户登录界面、聊天室选择、聊天窗口、用户列表等功能组件。Flex通过 BlazeDS 与 Java 服务器通信,获取和发送聊天数据。 7. **数据传输**:AMF是一种高效的二进制序列化格式...
在实际应用中,消息推送常用于股票交易、在线聊天、实时通知等场景。BlazDS提供了灵活的配置选项和强大的消息处理能力,使其成为构建高性能、实时交互应用的理想选择。 总结一下,BlazDS的消息推送功能使得Flex应用...
Blazeds是一款强大的Flex和Java之间的消息传递中间件,它由Adobe公司开发,主要用于构建富互联网应用程序(RIA)。本文将详细介绍Blazeds的核心概念、功能以及如何使用它。 Blazeds,全称BlazeDS,是Adobe Flex和...
**Spring BlazeDS Integration** 是一个强大的技术组合,它允许开发者使用Spring框架在后端服务器上进行业务逻辑处理,同时利用Adobe Flex在前端构建富互联网应用程序(RIA)。BlazeDS是Adobe提供的一种开源服务器端...
5. **消息模型**:在JMS中,有两种主要的消息模型——点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe)。点对点模型中,消息由一个生产者发送到队列,然后由一个消费者接收;发布/订阅模型中,消息由...
Blazeds是一个强大的Java服务器端技术,主要用于实现Flex(一种基于Adobe Flash的用户界面开发工具)与后端Java应用程序之间的数据交互。它提供了一个全面的解决方案,使开发人员能够构建富互联网应用程序(RIA),...
- **消息交换模式**:BlazeDS在客户端和服务器之间使用两种主要的交换模式——请求-响应模式和发送-订阅模式。请求-响应模式用于RPC服务,而发送-订阅模式则被消息服务所采用。这两种模式分别适用于不同类型的应用...