(仅限 BlazeDS)
mx.messaging
public class ChannelSet
继承ChannelSet Inheritance EventDispatcher Inheritance Object

ChannelSet 是用于将消息发送到目的目标的一组 Channel。如果出现网络失败或单个 Channel 问题,ChannelSet 可搜索其 Channel 来发送消息,从而提高了客户端的服务质量。

默认 MXML 属性channels



公共属性
 属性定义方
  authenticated : Boolean
[只读 (read-only)] 指示 ChannelSet 是否包含已成功对其端点进行身份验证的基础 Channel。
ChannelSet
  channelIds : Array
[只读 (read-only)] ChannelSet 使用的 Channel 的 id。
ChannelSet
  channels : Array
提供对 ChannelSet 中 Channel 的访问。
ChannelSet
  clustered : Boolean
指示 ChannelSet 是否面向群集化的目标。
ChannelSet
  connected : Boolean
[只读 (read-only)] 指示 ChannelSet 是否已连接。
ChannelSet
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  currentChannel : Channel
[只读 (read-only)] 返回 ChannelSet 的当前 Channel。
ChannelSet
  initialDestinationId : String
通过此属性可以访问用此 ChannelSet 访问的初始目标。
ChannelSet
  messageAgents : Array
[只读 (read-only)] 提供对使用此 ChannelSet 的一组 MessageAgent 的访问。
ChannelSet
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
ChannelSet(channelIds:Array = null, clusteredWithURLLoadBalancing:Boolean = false)
构造 ChannelSet。
ChannelSet
  
将 Channel 添加到 ChannelSet。
ChannelSet
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
处理 CONNECT ChannelEvent 并重新调度该事件。
ChannelSet
  
处理 DISCONNECT ChannelEvent 并重新调度该事件。
ChannelSet
  
处理 ChannelFaultEvent 并重新调度该事件。
ChannelSet
  
将 MessageAgent 联接到 ChannelSet。
ChannelSet
  
断开特定 MessageAgent 与 ChannelSet 之间的连接。
ChannelSet
  
与所有相关的 MessageAgent 断开连接并与已连接的任何基础 Channel 断开连接。
ChannelSet
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
login(username:String, password:String, charset:String = null):AsyncToken
针对使用提供的凭据的服务器对 ChannelSet 进行身份验证。
ChannelSet
  
从服务器注销 ChannelSet。
ChannelSet
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
将 Channel 从 ChannelSet 中删除。
ChannelSet
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
  
send(agent:MessageAgent, message:IMessage):void
通过当前连接的 Channel 发送 MessageAgent 中的消息。
ChannelSet
  
setCredentials(credentials:String, agent:MessageAgent, charset:String = null):void
存储这些凭据并将它们传送到每个已连接的通道。
ChannelSet
 Inherited
设置循环操作动态属性的可用性。
Object
  
返回包含 ChannelSet 中 Channel 的 id 的 String。
ChannelSet
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  ChannelSet 中的某一 Channel 连接到其端点后调度。ChannelSet
  ChannelSet 中的某一 Channel 与其端点断开连接后调度。ChannelSet
  ChannelSet 中的某一 Channel 出错后调度。ChannelSet
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  登录或注销调用失败时,将调度错误事件。ChannelSet
  在 ChannelSet 的某一属性发生更改时调度。ChannelSet
  登录或注销调用成功返回时,将调度结果事件。ChannelSet
属性详细信息
authenticated属性
authenticated:Boolean  [只读 (read-only)]

指示 ChannelSet 是否包含已成功对其端点进行身份验证的基础 Channel。

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



实现
    public function get authenticated():Boolean
channelIds属性 
channelIds:Array  [只读 (read-only)]

ChannelSet 使用的 Channel 的 id。



实现
    public function get channelIds():Array
channels属性 
channels:Array  [读写]

提供对 ChannelSet 中 Channel 的访问。此属性可用于立即分配一组通道或通过 addChannel() 直接将这些通道逐个添加到 ChannelSet。如果此 ChannelSet 为 configured,将自动创建各个通道并根据需要将其添加到此属性。



实现
    public function get channels():Array
    public function set channels(value:Array):void

引发
IllegalOperationError — 如果 ChannelSet 为 configured,将不允许为此属性分配值。
clustered属性 
clustered:Boolean  [读写]

指示 ChannelSet 是否面向群集化的目标。如果为 true,则连接成功后,ChannelSet 将为所有群集化端点的目标查询其 Channel,并为它们分配 failoverURI。Channel id 用于将 failoverURI 分配给合适的 Channel 实例,因此这需要 ChannelSet 中的所有 Channel 的 id 为非 null,否则,将此属性设置为 true 时会引发错误。如果 ChannelSet 未使用客户端上的 url 负载平衡,则不会将此属性设置为 true。



实现
    public function get clustered():Boolean
    public function set clustered(value:Boolean):void
connected属性 
connected:Boolean  [只读 (read-only)]

指示 ChannelSet 是否已连接。

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



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

返回 ChannelSet 的当前 Channel。



实现
    public function get currentChannel():Channel
initialDestinationId属性 
initialDestinationId:String  [读写]

通过此属性可以访问用此 ChannelSet 访问的初始目标。clustered 属性为 ture 时,此值用于为目标的已配置通道请求可用的故障转移 URI。



实现
    public function get initialDestinationId():String
    public function set initialDestinationId(value:String):void
messageAgents属性 
messageAgents:Array  [只读 (read-only)]

提供对使用此 ChannelSet 的一组 MessageAgent 的访问。



实现
    public function get messageAgents():Array
构造函数详细信息
ChannelSet()构造函数
public function ChannelSet(channelIds:Array = null, clusteredWithURLLoadBalancing:Boolean = false)

构造 ChannelSet。如果提供 channelIds 参数,ChannelSet 将自动使用通过 ServerConfig.getChannel() 获得的已配置 Channel 来达到目标。不允许尝试手动将 Channel 分配给使用已配置 Channel 的 ChannelSet。

如果未提供 channelIds 参数或该参数为 null,必须手动创建 Channel 并将其添加到 ChannelSet,才能连接和发送消息。

如果使用 url 负载平衡(其中每个服务器声明唯一的 RTMP 或 HTTP URL,并且客户端将故障从一个 URL 转移到另一个 URL)群集化 ChannelSet,则当 ChannelSet 中的 Channel 连接首次成功时,ChannelSet 将自动为所有成员 Channel 发出对群集中的所有端点的请求,并将这些故障转移 URL 分别分配给各个 Channel。这允许 ChannelSet 中的各个 Channel 单独进行故障转移,并且当特定 Channel 的故障转移选项用尽时,ChannelSet 将进入到该集中的下一个 Channel 以尝试重新建立连接。

无论 clustering 为何,如果 Channel 无法连接或连接松动,ChannelSet 都将进入到它的下一个可用 Channel 并尝试重新建立连接。这允许 ChannelSet 在使用不同协议、端口等的 Channel 中进行搜索,以找出一个可以成功连接到其端口的 Channel。

参数
channelIds:Array (default = null) — 从 ServerConfig 获得的已配置 Channel 的 id,供此 ChannelSet 使用。如果为 null,必须手动将 Channel 添加到 ChannelSet。
 
clusteredWithURLLoadBalancing:Boolean (default = false) — 如果使用 url 负载平衡群集化 ChannelSet 中的 Channel,则为 true。
方法详细信息
addChannel()方法
public function addChannel(channel:Channel):void

将 Channel 添加到 ChannelSet。如果 ChannelSet 面向群集化的目标,则无法将 id 为 null 的 Channel 添加到 ChannelSet。

参数

channel:Channel — 要添加的 Channel。


引发
IllegalOperationError — 如果 ChannelSet 为 configured,将不支持添加 Channel。如果 ChannelSet 的 clustered 属性为 true,但 Channel 的 id 为 null,也会引发此错误。
channelConnectHandler()方法 
public function channelConnectHandler(event:ChannelEvent):void

处理 CONNECT ChannelEvent 并重新调度该事件。

参数

event:ChannelEvent — ChannelEvent。

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

处理 DISCONNECT ChannelEvent 并重新调度该事件。

参数

event:ChannelEvent — ChannelEvent。

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

处理 ChannelFaultEvent 并重新调度该事件。

参数

event:ChannelFaultEvent — ChannelFaultEvent。

connect()方法 
public function connect(agent:MessageAgent):void

将 MessageAgent 联接到 ChannelSet。连接后,代理便可以使用 ChannelSet 发送消息。

参数

agent:MessageAgent — 要连接的 MessageAgent。

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

断开特定 MessageAgent 与 ChannelSet 之间的连接。如果这是使用 ChannelSet 的最后一个 MessageAgent,并且该集中的当前 Channel 处于已连接状态,则该 Channel 将与服务器从物理上断开连接。

参数

agent:MessageAgent — 要断开连接的 MessageAgent。

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

与所有相关的 MessageAgent 断开连接并与已连接的任何基础 Channel 断开连接。disconnect(MessageAgent) 由特定服务组件的断开连接实现调用,此方法与之不同,它为关闭客户端和服务器之间的连接提供了一个方便点。

login()方法 
public function login(username:String, password:String, charset:String = null):AsyncToken

针对使用提供的凭据的服务器对 ChannelSet 进行身份验证。与 Channel 和 ChannelSet 上的其它操作不同,此操作将返回客户端代码可能将响应方添加到的 AsyncToken,以便直接处理成功或失败。如果调用此方法时 ChannelSet 尚未连接到服务器,它将触发连接尝试,如果连接尝试成功,则会向服务器发送登录命令。一次只能挂起一个登录或注销操作,如果调用发生重叠,则将生成 IllegalOperationError。如果在 ChannelSet 已经过身份验证时调用登录,也会生成 IllegalOperationError。

参数

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

返回
AsyncToken — 返回客户端代码为了直接处理成功或失败而可能向其添加 responder 的标记。

引发
IllegalOperationError — 有两种情况:ChannelSet 已经过身份验证,或者登录或注销操作当前正在进行中。
logout()方法 
public function logout(agent:MessageAgent = null):AsyncToken

从服务器注销 ChannelSet。与 Channel 和 ChannelSet 上的其它操作不同,此操作将返回客户端代码可能将响应方添加到的 AsyncToken,以便直接处理成功或失败。如果注销成功,将为 ChannelSet 及其 Channel 清除所有为了用于自动重新连接而进行缓存的凭据,并且将它们已经过身份验证的状态设置为 false。如果调用此方法时 ChannelSet 尚未连接到服务器,它将触发连接尝试,如果连接尝试成功,则会向服务器发送注销命令。

MessageAgent 参数旨在支持旧的注销行为,并且调用此方法的客户端代码将不会传递 MessageAgent 引用。仅调用 logout() 不会传递任何参数。

服务组件也从它们的 logout() 方法调用此方法,并且这些组件在注销时将 MessageAgent 引用传递给此方法。此参数的出现可触发执行旧的注销行为,该行为与以上所述的新行为不同。如果客户端已连接并且已经过身份验证,则旧的行为仅向服务器发送注销请求。如果不满足这些条件,此方法的旧行为除仅清除所有为用于自动重新连接而进行缓存的凭据之外,不会进行任何其它操作。

参数

agent:MessageAgent (default = null) — Legacy 参数。启动注销的 MessageAgent。

返回
AsyncToken — 返回客户端代码为了直接处理成功或失败而可能向其添加 responder 的标记。

引发
IllegalOperationError — 如果登录或注销操作当前正在进行中。
removeChannel()方法 
public function removeChannel(channel:Channel):void

将 Channel 从 ChannelSet 中删除。如果要删除的 Channel 当前处于已连接状态并由 ChannelSet 使用,则它在被删除的同时也就断开了连接。

参数

channel:Channel — 要删除的 Channel。


引发
IllegalOperationError — 如果 ChannelSet 为 configured,则不支持删除 Channel。
send()方法 
public function send(agent:MessageAgent, message:IMessage):void

通过当前连接的 Channel 发送 MessageAgent 中的消息。

参数

agent:MessageAgent — 用于发送消息的 MessageAgent。
 
message:IMessage — 要发送的 Message。


引发
NoChannelAvailableError — 如果 ChannelSet 不包含可供使用的内部 Channel。
setCredentials()方法 
public function setCredentials(credentials:String, agent:MessageAgent, charset:String = null):void

存储这些凭据并将它们传送到每个已连接的通道。

参数

credentials:String — MessageAgent 的凭据。
 
agent:MessageAgent — 设置凭据的 MessageAgent。
 
charset:String (default = null) — 对凭据进行编码时使用的字符集编码。默认值为 null,表示旧编码为 ISO-Latin-1。


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

返回包含 ChannelSet 中 Channel 的 id 的 String。

返回
String — ChannelSet 的字符串表示形式。
事件详细信息
channelConnect 事件
事件对象类型: mx.messaging.events.ChannelEvent
属性 ChannelEvent.type = mx.messaging.events.ChannelEvent.CONNECT

ChannelSet 中的某一 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

ChannelSet 中的某一 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

ChannelSet 中的某一 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.rpc.events.FaultEvent
属性 FaultEvent.type = mx.rpc.events.FaultEvent.FAULT

登录或注销调用失败时,将调度错误事件。

FAULT 事件类型。

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

属性
bubbles false
cancelable true,通过关联标记的 responder.fault 方法调用 preventDefault() 将防止服务或操作调度此事件。
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
fault 包含导致此事件原因的详细信息的 Fault 对象。
message 与此事件相关联的 Message。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
token 表示方法调用的标记。用于异步完成标记模式。
propertyChange 事件  
事件对象类型: mx.events.PropertyChangeEvent
属性 PropertyChangeEvent.type = mx.events.PropertyChangeEvent.PROPERTY_CHANGE

在 ChannelSet 的某一属性发生更改时调度。

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。
result 事件  
事件对象类型: mx.rpc.events.ResultEvent
属性 ResultEvent.type = mx.rpc.events.ResultEvent.RESULT

登录或注销调用成功返回时,将调度结果事件。

RESULT 事件类型。

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

属性
bubbles false
cancelable true,通过关联标记的 responder.result 方法调用 preventDefault() 将防止服务或操作调度此事件。
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
message 与此事件相关联的 Message。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
result RPC 调用返回的结果。
token 表示对方法单独调用的标记。用于异步完成标记模式。