(仅限 BlazeDS)
mx.messaging
public class MessageAgent
继承MessageAgent Inheritance EventDispatcher Inheritance Object
实现 IMXMLObject
子类 AbstractConsumer, AbstractProducer

MessageAgent 类提供基本的低级功能,该功能对于目标的消息处理很常见。

注意:仅在高级用法中使用。使用此类创建如现有的 Producer 类和 Consumer 类这样的自定义消息代理。

MXML 语法expanded隐藏 MXML 语法

All message agent classes, including the Producer and Consumer classes, extend MessageAgent and inherit the following tag attributes:

   <mx:tagname
Properties channelSet="No default." clientId="No default." connected="false" destination="No default." requestTimeout="-1" subtopic="No default." Events acknowledge="No default." channelConnect="No default." channelDisconnect="No default." channelFault="No default." fault="No default." propertyChange="No default." />


公共属性
 属性定义方
  authenticated : Boolean
[只读 (read-only)] 指示此 MessageAgent 是否使用指向其目标的经过身份验证的连接。
MessageAgent
  channelSet : ChannelSet
提供对 MessageAgent 使用的 ChannelSet 的访问。
MessageAgent
  clientId : String
[只读 (read-only)] 提供对 MessageAgent 的客户端 id 的访问。
MessageAgent
  connected : Boolean
[只读 (read-only)] 指示此 MessageAgent 当前是否已通过其 ChannelSet 连接到了其目标。
MessageAgent
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  destination : String
提供对 MessageAgent 的目标的访问。
MessageAgent
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  requestTimeout : int
提供对已发送消息的请求超时(以秒为单位)的访问。
MessageAgent
公共方法
 方法定义方
  
构造函数。
MessageAgent
  
收到已发送消息的结果时由 MessageResponder 调用。
MessageAgent
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
处理 CONNECT ChannelEvent。
MessageAgent
  
处理 DISCONNECT ChannelEvent。
MessageAgent
  
处理 ChannelFaultEvent。
MessageAgent
  
断开 MessageAgent 的网络连接的连接。
MessageAgent
 Inherited
将事件调度到事件流中。
EventDispatcher
  
收到已发送消息的错误时由 MessageResponder 调用。
MessageAgent
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
如果存在传入消息的任何挂起的请求,则返回 true。
MessageAgent
  
在创建了实现对象、并分配了标签上指定的所有属性后调用。
MessageAgent
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
从其远程目标注销 MessageAgent。
MessageAgent
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
  
setCredentials(username:String, password:String, charset:String = null):void
设置 MessageAgent 用于对目标进行身份验证的凭据。
MessageAgent
 Inherited
设置循环操作动态属性的可用性。
Object
  
setRemoteCredentials(username:String, password:String, charset:String = null):void
设置将传递到远程目标以对次系统进行身份验证的远程凭据。
MessageAgent
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
受保护的方法
 方法定义方
  
用于首次连接之前自动初始化 MessageAgent 的 channelSet 属性。
MessageAgent
  
internalSend(message:IMessage, waitForClientId:Boolean = true):void
使用代理的 ChannelSet 将 Message 从 MessageAgent 发送到其目标。
MessageAgent
  
子类将覆盖此函数来实现由特定于它们的服务器会话超时行为而导致的重新身份验证。
MessageAgent
事件
 事件 摘要 定义方
  收到已发送消息的确认消息时调度。MessageAgent
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  MessageAgent 使用的基础 Channel 建立连接时调度。MessageAgent
  MessageAgent 使用的基础 Channel 断开连接时调度。MessageAgent
  MessageAgent 使用的基础 Channel 出错时调度。MessageAgent
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  发生消息错误时调度。MessageAgent
  MessageAgent 的连接属性发生更改时调度。MessageAgent
属性详细信息
authenticated属性
authenticated:Boolean  [只读 (read-only)]

指示此 MessageAgent 是否使用指向其目标的经过身份验证的连接。

此属性可用作数据绑定的源。修改此属性后,将调度 propertyChange 事件。



实现
    public function get authenticated():Boolean
channelSet属性 
channelSet:ChannelSet  [读写]

提供对 MessageAgent 使用的 ChannelSet 的访问。可以手动构造和分配 ChannelSet,否则将动态对其进行初始化以对此 MessageAgent 的目标使用已配置 Channel。

此属性可用作数据绑定的源。修改此属性后,将调度 propertyChange 事件。



实现
    public function get channelSet():ChannelSet
    public function set channelSet(value:ChannelSet):void
clientId属性 
clientId:String  [只读 (read-only)]

提供对 MessageAgent 的客户端 id 的访问。MessageAgent 的客户端 id 由远程目标分配,并且此值用于将消息从远程目标传送到合适的 MessageAgent。

此属性可用作数据绑定的源。修改此属性后,将调度 propertyChange 事件。



实现
    public function get clientId():String
connected属性 
connected:Boolean  [只读 (read-only)]

指示此 MessageAgent 当前是否已通过其 ChannelSet 连接到了其目标。此属性发生更改时调度 propertyChange 事件。

此属性可用作数据绑定的源。修改此属性后,将调度 propertyChange 事件。



实现
    public function get connected():Boolean
destination属性 
destination:String  [读写]

提供对 MessageAgent 的目标的访问。更改目标将断开 MessageAgent 的连接(如果当前已连接)。

此属性可用作数据绑定的源。修改此属性后,将调度 propertyChange 事件。



实现
    public function get destination():String
    public function set destination(value:String):void

引发
InvalidDestinationError — 如果目标为 null 或长度为 0。
requestTimeout属性 
requestTimeout:int  [读写]

提供对已发送消息的请求超时(以秒为单位)的访问。如果在达到超时之前未从远程目标收到确认、响应或错误,则消息将在客户端上出错。如果值小于 0 或等于 0,则可阻止请求超时的发生。

此属性可用作数据绑定的源。修改此属性后,将调度 propertyChange 事件。



实现
    public function get requestTimeout():int
    public function set requestTimeout(value:int):void
构造函数详细信息
MessageAgent()构造函数
public function MessageAgent()

构造函数。

方法详细信息
acknowledge()方法
public function acknowledge(ackMsg:AcknowledgeMessage, msg:IMessage):void

收到已发送消息的结果时由 MessageResponder 调用。如果子类需要执行自定义确认处理,它们可能会覆盖此方法,但是同时还必须调用 super.acknowledge()。此方法将调度 MessageAckEvent。

参数

ackMsg:AcknowledgeMessage — 返回的 AcknowledgMessage。
 
msg:IMessage — 原始已发送消息。

channelConnectHandler()方法 
public function channelConnectHandler(event:ChannelEvent):void

处理 CONNECT ChannelEvent。需要执行自定义处理的子类将覆盖此方法,并调用 super.channelConnectHandler()

参数

event:ChannelEvent — ChannelEvent。

channelDisconnectHandler()方法 
public function channelDisconnectHandler(event:ChannelEvent):void

处理 DISCONNECT ChannelEvent。需要执行自定义处理的子类将覆盖此方法,并调用 super.channelDisconnectHandler()

参数

event:ChannelEvent — ChannelEvent。

channelFaultHandler()方法 
public function channelFaultHandler(event:ChannelFaultEvent):void

处理 ChannelFaultEvent。需要执行自定义处理的子类将覆盖此方法,并调用 super.channelFaultHandler()

参数

event:ChannelFaultEvent — ChannelFaultEvent

disconnect()方法 
public function disconnect():void

断开 MessageAgent 的网络连接的连接。此方法不会等待未完成的网络操作完成。

fault()方法 
public function fault(errMsg:ErrorMessage, msg:IMessage):void

收到已发送消息的错误时由 MessageResponder 调用。如果子类需要执行自定义错误处理,它们可能会覆盖此方法,但是同时还必须调用 super.fault()。此方法将调度 MessageFaultEvent。

参数

errMsg:ErrorMessage — ErrorMessage。
 
msg:IMessage — 导致此错误的原始已发送消息。

hasPendingRequestForMessage()方法 
public function hasPendingRequestForMessage(msg:IMessage):Boolean

如果存在传入消息的任何挂起的请求,则返回 true。子类将覆盖此方法

参数

msg:IMessage — 已针对其检查是否存在挂起请求的消息。

返回
Boolean — 如果对传入的消息有任何挂起的请求,则返回 true
initChannelSet()方法 
protected function initChannelSet(message:IMessage):void

用于首次连接之前自动初始化 MessageAgent 的 channelSet 属性。子类型可能覆盖此方法以执行自定义初始化。

参数

message:IMessage — 需要发送的消息。

initialized()方法 
public function initialized(document:Object, id:String):void

在创建了实现对象、并分配了标签上指定的所有属性后调用。

参数

document:Object — 创建此对象的 MXML 文档。
 
id:String — 文档用于引用此对象的 id。如果该对象是文档上的深层属性,则 id 为 null。

internalSend()方法 
protected function internalSend(message:IMessage, waitForClientId:Boolean = true):void

使用代理的 ChannelSet 将 Message 从 MessageAgent 发送到其目标。MessageAgent 子类必须使用此方法发送其消息。

参数

message:IMessage — 要发送的消息。
 
waitForClientId:Boolean (default = true) — 如果为 true,消息可能会排列到队列中,直到为代理分配了 clientId。通常,这是所需行为。对于特殊行为(自动重新连接和重新订阅),代理可能传递 false 来覆盖默认队列行为。


引发
InvalidDestinationError — 如果未设置目标。
logout()方法 
public function logout():void

从其远程目标注销 MessageAgent。从目标中注销适用于使用在服务器配置中指定的同一 ChannelSet 连接的所有对象。例如,如果多个 DataService 组件通过 RTMP 通道进行连接,为它们其中之一调用 logout() 时,使用相同 ChannelSet 进行连接的所有其它客户端组件也会注销。

reAuthorize()方法 
protected function reAuthorize(msg:IMessage):void

子类将覆盖此函数来实现由特定于它们的服务器会话超时行为而导致的重新身份验证。通常,它将遵循断开连接、连接、重新发送消息模式

参数

msg:IMessage — 导致错误并应在用户断开连接/连接由此导致的身份重新验证后立即重新发送的消息。

setCredentials()方法 
public function setCredentials(username:String, password:String, charset:String = null):void

设置 MessageAgent 用于对目标进行身份验证的凭据。凭据适用于通过相同 ChannelSet 连接的所有服务。

参数

username:String — 用户名。
 
password:String — 密码。
 
charset:String (default = null) — 对凭据进行编码时使用的字符集编码。默认值为 null,表示旧字符集 ISO-Latin-1。其它受支持的字符集仅有“UTF-8”。


引发
IllegalOperationError — 适用于两种情况:已设置凭据并且正在对远程目标进行身份验证;已经过身份验证,但指定的凭据与当前已经过身份验证的凭据不匹配。
setRemoteCredentials()方法 
public function setRemoteCredentials(username:String, password:String, charset:String = null):void

设置将传递到远程目标以对次系统进行身份验证的远程凭据。

参数

username:String — 用户名。
 
password:String — 密码。
 
charset:String (default = null) — 对远程凭据进行编码时使用的字符集编码。默认值为 null,表示旧字符集 ISO-Latin-1。当前受支持的唯一其它选项是“UTF-8”。

事件详细信息
acknowledge 事件
事件对象类型: mx.messaging.events.MessageAckEvent
属性 MessageAckEvent.type = mx.messaging.events.MessageAckEvent.ACKNOWLEDGE

收到已发送消息的确认消息时调度。

ACKNOWLEDGE 事件类型;当收到确认消息时调度。

此常数的值为 "acknowledge"

事件对象的属性有下列值:

属性
acknowledgeMessage 从 MessageEvent 获取 message 属性作为 AcknowledgeMessage 的实用程序属性。
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
correlate 与此确认相关的原始 Message。
message 与此事件相关联的 Message。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
channelConnect 事件  
事件对象类型: mx.messaging.events.ChannelEvent
属性 ChannelEvent.type = mx.messaging.events.ChannelEvent.CONNECT

MessageAgent 使用的基础 Channel 建立连接时调度。

CONNECT 事件类型;指示 Channel 已连接到其端点。

此常数的值为 "channelConnect"

事件对象的属性有下列值:

属性
bubbles false
cancelable false
channel 生成此事件的通道。
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
reconnecting 指示是否正在重新连接生成此事件的通道。
rejected 指示生成此事件的通道是否已被拒绝。如果通道因处于不活动状态而断开连接,并且不会尝试故障转移或连接到备用通道,则此属性将为 true。
channelDisconnect 事件  
事件对象类型: mx.messaging.events.ChannelEvent
属性 ChannelEvent.type = mx.messaging.events.ChannelEvent.DISCONNECT

MessageAgent 使用的基础 Channel 断开连接时调度。

DISCONNECT 事件类型;指示 Channel 已与其端点断开连接。

此常数的值为 "channelDisconnect"

事件对象的属性有下列值:

属性
bubbles false
cancelable false
channel 生成此事件的通道。
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
reconnecting 指示是否正在重新连接生成此事件的通道。
rejected 指示生成此事件的通道是否已被拒绝。如果通道因处于不活动状态而断开连接,并且不会尝试故障转移或连接到备用通道,则此属性将为 true。
channelFault 事件  
事件对象类型: mx.messaging.events.ChannelFaultEvent
属性 ChannelFaultEvent.type = mx.messaging.events.ChannelFaultEvent.FAULT

MessageAgent 使用的基础 Channel 出错时调度。

FAULT 事件类型;指示发生错误的 Channel。

此常数的值为 "channelFault"

事件对象的属性有下列值:

属性
bubbles false
cancelable false
channel 生成此事件的 Channel。
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
faultCode 提供有关此失败的特定于目标的详细信息。
faultDetail 提供对此失败特定于目标的原因的访问权限。
faultString 如果通道本身未引发失败,则提供对此失败根本原因的访问权限。
reconnecting 指示是否正在重新连接生成此事件的通道。
rootCause 如果通道本身未引发失败,则提供对此失败根本原因的访问权限。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
fault 事件  
事件对象类型: mx.messaging.events.MessageFaultEvent
属性 MessageFaultEvent.type = mx.messaging.events.MessageFaultEvent.FAULT

发生消息错误时调度。

FAULT 事件类型;当消息发生错误时调度。

此常数的值为 "fault"

事件对象的属性有下列值:

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
faultCode 提供有关此失败的特定于目标的详细信息。
faultDetail 提供对此失败特定于目标的原因的访问权限。
faultString 如果通道本身未引发失败,则提供对此失败根本原因的访问权限。
message 此事件的 ErrorMessage。
rootCause 提供对此失败的根本原因的访问权限(如果存在)。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
propertyChange 事件  
事件对象类型: mx.events.PropertyChangeEvent
属性 PropertyChangeEvent.type = mx.events.PropertyChangeEvent.PROPERTY_CHANGE

MessageAgent 的 connected 属性发生更改时调度。Consumer 的 subscribed 发生更改时也会调度。

PropertyChangeEvent.PROPERTY_CHANGE 常数可为 PropertyChange 事件定义事件对象的 type 属性的值。

事件对象的属性有下列值:

属性
bubbles 由构造函数确定;默认值为 false。
cancelable 由构造函数确定;默认值为 false。
kind 更改类型;PropertyChangeEventKind.UPDATE 或 PropertyChangeEventKind.DELETE。
oldValue 原始属性值。
newValue 新属性值(如果有)。
property 更改的属性。
source 包含更改属性的对象。
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。

另请参见