基础知识
:http://keren.iteye.com/blog/479000
Message Service 提供发布(publish)
/订阅(subscribe)
机制允许Flex 应用程序发布消息、订阅消息终端(messaging destination),从而实现数据的实时推动
和协作传送
。
消息终端在messaging-config.xml配置,其中频道(channel)是其关键元素,它用来实现客户端和服务器端交换数据。使用BlazeDS,消息终端通常用作streaming
频道或者polling
频道。
使用streaming频道,服务器端会一直响应
HTTP请求直到该频道连接被关闭,它允许服务器向客户端不断传送大量的数据
。因为HTTP 连接是独一无二的,这实现数据的双向传送,每个streaming AMF或者HTTP频道事实上需要两个浏览器 HTTP连接,一个连接需要不断处理服务器端与频道紧密相关的客户端的响应。另外需要一个短暂连接,只有当数据需要传送到服务器时,它才脱离浏览器连接池;当短暂连接不再需要时,它立即被释放回浏览器连接池。
polling频道可以通过简单的时间间隔
或者使用服务器等待来配置,如果数据不马上可用 (长轮循)的话。另外,每次轮循响应完成请求。默认下浏览器HTTP 1.1的连接是持续的,浏览器轮循已有的连接,发送并发的轮循请求,以此来减轻轮循的开销。
当需要准实时通信
时,streaming
频道是最好选择。
Messaging Service可以让 某个客户端
和 其他客户端
之间 发送接收
信息。
1.
在“services-config.xml
”中添加以下内容:(记住channel
名字为amfpoll
,后面会用到)
设置polling频道的间隔
是1秒钟,即客户端每隔1秒钟就会向服务器请求这个消息。
使用polling频道是客户端获取更新最简单的途径
。
<channel-definition id="my-amf-poll" class="mx.messaging.channels.AMFChannel">
<endpoint
url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpoll"
class="flex.messaging.endpoints.AMFEndpoint"/>
<properties>
<polling-enabled>true</polling-enabled>
<polling-interval-seconds>1</polling-interval-seconds>
</properties>
</channel-definition>
2.
在“messaging-config.xml
”中添加以下内容:
<destination id="MessagingDestination" channels="my-amf-poll"/>
3.
建立一个mxml:(需手动建立channel
)
Flex客户端使用 Producer
组件来发送
一个消息到服务器
- 创建 AsyncMessage
类的对象,设置该对象的 body
属性
- 调用 Producer.send()
方法进行发送
使用 Consumer
组件接收
消息
- 使用 Consumer.subscribe
() 来订阅
消息
<?xml version="1.0"?>
<!-- intro\intro_messaging.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%"
creationComplete="consumer.subscribe();">
<mx:Script>
<![CDATA[
import mx.messaging.events.MessageFaultEvent;
import mx.messaging.events.MessageEvent;
import mx.messaging.messages.AsyncMessage;
import mx.messaging.Producer;
import mx.messaging.Consumer;
// Send the message in response to a Button click.
private function sendMessage():void {
var msg:AsyncMessage = new AsyncMessage();
msg.body = "Foo";
producer.send(msg);
}
// Handle the received message.
private function messageHandler(event:MessageEvent):void {
ta.text += "Consumer received message: "+ event.message.body + "\n";
}
// Handle a message fault.
private function faultHandler(event:MessageFaultEvent):void {
ta.text += "Received fault: " + event.faultString + "\n";
}
]]>
</mx:Script>
<!-- 设置channel为amfpoll -->
<mx:AMFChannel id="myamf"
uri="/ptp/messagebroker/amfpoll"/>
<mx:ChannelSet id="channelSet"
channels="{[myamf]}"/>
<mx:Producer id="producer" channelSet="{channelSet}"
destination="MessagingDestination"
fault="faultHandler(event);"/>
<mx:Consumer id="consumer" channelSet="{channelSet}"
destination="MessagingDestination"
fault="faultHandler(event);"
message="messageHandler(event);"/>
<mx:Button label="Send" click="sendMessage();"/>
<mx:TextArea id="ta" width="100%" height="100%"/>
</mx:Application>
分享到:
相关推荐
3. LCDS:提供Flex和Java之间的数据服务。 4. Tomcat 5或更高版本:作为Web应用服务器运行Flex项目。 入门教程: 创建Flex LCDS项目: 1. 打开FlexBuilder3,选择"File -> new -> Flex Project"。 2. 在向导界面1...
Flex、LCDS(LiveCycle Data Services...这个入门教程将引导你逐步掌握Flex、LCDS和Java的综合运用,为开发高质量的RIA应用打下坚实的基础。通过深入学习和实践,你将能够构建出功能强大、用户体验优秀的Web应用程序。
- LCDS:提供数据服务。 - Tomcat 5 或更高版本:作为应用服务器。 **5. 入门教程** **步骤1:创建Flex LCDS工程** - 在Eclipse中,通过`File -> new -> Flex Project`创建新项目。 - 选择Java源代码的根目录,确保...
4. LCDS:LiveCycle Data Services的安装包。 5. Tomcat 5或更高版本:一个流行的Java应用服务器。 安装好这些工具后,可以开始创建Flex + LCDS项目: 1. 新建Flex LCDS工程:在Eclipse中,选择File -> New -> ...
### Flex + LCDS + Java 入门教程精要 #### 引言 随着技术的发展,Flex、LCDS以及Java成为了构建高效、交互性强的应用程序的重要工具。本文将深入解析Flex + LCDS + Java的核心概念与实践技巧,为初学者提供一个...
Flex+LCDS+JAVA入门教程主要涵盖了三个关键的技术领域,它们分别是Adobe Flex、LCDS(LiveCycle Data Services)以及Java。这些技术结合在一起,能够构建高效、交互性强的富互联网应用程序(RIA)。以下是对这三个...
Flex+LCDS+Java入门教程,如何使用MyEclips进行配置
LCDS,全称LiveCycle Data Services,原名Flex Data Service,是Adobe提供的一个企业级服务,用于连接Flex应用与Java或ColdFusion后端。LCDS提供了许多高级特性,如Java对象到Flex对象的映射、实时消息协议(RTMP)...