服务端FlexClient、MessageClient、FlexSession类的实例代表了Flex应用和服务端的连接。你可以使用这些对象管理FLEX应用程序和服务端的同步。
FlexClient, MessageClient, and FlexSession objects
FlexClient
每一个MXML或者AS的Flex应用都被编译进SWF文件。当SWF文件和Blazeds服务通信的时候,一个flex.message.client.FlexClient对象就被创建,并在服务端代表这个SWF文件。SWF文件和FlexClient实例具有一对一的映射关系。Blazeds服务端为每个FlexClient实例生成一个唯一的标识id。在客户端也有一个单例类mx.message.FlexClient,用于存储这个唯一的FlexClient Id。
MessageClient
如果某个Flex应用程序含有一个订阅组件(flex.message.Consumer),服务端就会创建一个相应的flex.messaging.MessageClient实例来代表这个订阅者的发布者。每个MessageClient都有一个唯一的clientId,可以自动由Blazeds服务端生成,也可以在调用Consumer.subscribe()方法之前指定这个Consumer.clientId属性。
FlexSession
FlexSession对象代表在Flex程序和Blazeds服务之间的连接。它的生命周期基于通道和端点使用的底层协议。如果是基于HTTP的通道,例如AMFChannel或者HTTPChannel,在Blazeds服务端就是浏览器范围。如果它连接的端点是一个基于servlet的端点,那么这个HTTP session是基于J2EE HttpSession 对象。
三者之间的关系
一个FlexObject对象可以拥有多个FlexSession实例,这取决于Flex应用使用的通道数。例如,一个程序使用了一个HTTPChannel,那么在Blazeds服务端一个FlexSession代表这个HTTP session就会被创建。
一个FlexSession也可以拥有一个或多个FlexClient和它关联。例如,a SWF file that uses an
HTTPChannel is opened in two tabs,在BlazeDS服务端2个FlexClient实例被创建(一个SWF文件一个),但是只有一个FlexSession,因为两个tab共享同一个HTTP session。
每个订阅组件都会创建MessageClient。每一个MessageClient都会和一个FlexClient以及一个FlexSession关联。
理解:一个channel对应一个FlexSession,一个SWF文件实例对应一个FlexClient,多个请求会创建多个SWF文件实例,服务端也将创建多个FlexClient对应每一SWF文件,但只有一个FLexSession被创建(假设他们都是用一个HTTPChannel通信)
关于三者的监听器
BlazeDS服务端提供了下列监听器,来让你根据自己的逻辑来创建、销毁、以及改变三者的状态。
|
FlexClientListener |
|
FlexClientAttributeListener |
|
FlexClientBindingListener |
|
FlexSessionListener |
|
FlexSessionAttributeListener |
|
FlexSessionBindingListener |
|
MessageClientListener |
分享到:
相关推荐
- **会话对象**:介绍FlexClient、MessageClient和FlexSession等会话管理对象的使用方法。 - **FlexContext类**:阐述如何利用FlexContext类管理和获取会话属性。 - **会话生命周期**:描述会话的创建、维护和销毁...
5.2.5 FlexClient和FlexSession 161 5.3 BlazeDS的配置 162 5.3.1 配置MessageBrokerServlet 162 5.3.2 services-config.xml 163 5.3.3 Channel和Endpoint 165 5.3.4 Service、Adapter和Destination 166 5.3.5...
解压后,有两个flex工程:FlexServer1.1和FlexClient1.1,其中server是java的web工程,用于tomcat部署;client是flashBuilder的工程,主要是显示页面。具体原理参考相应blog。
在实际应用中,客户端与服务器端的交互通常通过AMF(Action Message Format)或HTTP服务进行。 总结来说,本实例涉及了Flex DataGrid的双击事件处理,通过监听`doubleClick`事件,获取选中行的数据,并根据这些数据...
var channelSet:ChannelSet = FlexClient.getInstance().channelSet; var amfChannel:AMFChannel = channelSet["myAMF"]; amfChannel.send(message, this, handleResponse); } private function handleResponse...
Flex支持多种远程调用协议,如AMF(Action Message Format)和HTTPService。AMF是一种高效的数据交换格式,允许客户端和服务器之间快速传输复杂的数据结构,而HTTPService则利用HTTP协议发送XML或JSON数据。根据描述...
8. **SpringFlexExample_FlexClient**: - 这个文件可能是项目中的Flex客户端示例代码,包含了Flex应用程序的源码和配置,如.mxml文件、ActionScript类等。 - 可以通过分析这个示例代码,了解如何将Spring服务暴露...