(仅限 BlazeDS)
mx.messaging
public class Channel
继承Channel Inheritance EventDispatcher Inheritance Object
实现 IMXMLObject
子类 PollingChannel

Channel 类是消息传递系统中的所有通道都必须扩展的消息通道基类。

通道是基于特定协议的渠道,用于在 MessageAgent 和远程目标之间发送消息。可使用 ServerConfig.getChannel() 方法在框架内获得预配置的通道。您可以使用 new 运算符直接创建 Channel,然后将其直接添加到 ChannelSet。

通道表示到远程端点的物理连接。默认情况下,通道可以跨目标共享。这意味着定向于不同目标的客户端可以使用同一 Channel 与这些目标进行通信。

注意:仅在高级用法中使用此类。使用此类可以创建诸如现有的 RTMPChannel、AMFChannel 和 HTTPChannel 之类的自定义通道。



公共属性
 属性定义方
  authenticated : Boolean
[只读 (read-only)] 指示此通道是否已经过身份验证。
Channel
  channelSets : Array
[只读 (read-only)] 提供对连接到 Channel 的 ChannelSet 的访问。
Channel
  connected : Boolean
[只读 (read-only)] 指示此通道是否已与远程目标建立连接。
Channel
  connectTimeout : int
提供对此通道的连接超时(以秒为单位)的访问。
Channel
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  endpoint : String
[只读 (read-only)] 提供对此通道的端点的访问。
Channel
  failoverURIs : Array
提供对此通道可能尝试将故障转移到的端点 URI 集的访问(如果端点已群集化)。
Channel
  id : String
提供对此通道的 id 的访问。
Channel
  protocol : String
[只读 (read-only)] 提供对通道使用的协议的访问。
Channel
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  reconnecting : Boolean
[只读 (read-only)] 指示此通道是否正在重新连接到其它端点。
Channel
  recordMessageSizes : Boolean
[只读 (read-only)] Channel 属性确定性能信息注入的级别 - 无论我们注入消息大小与否。
Channel
  recordMessageTimes : Boolean
[只读 (read-only)] Channel 属性确定性能信息注入的级别 - 无论我们注入时间戳与否。
Channel
  requestTimeout : int
提供对通道的默认请求超时(以秒为单位)的访问。
Channel
  uri : String
提供对用于创建此通道的整个端点 URI 的 URI 的访问。
Channel
公共方法
 方法定义方
  
Channel(id:String = null, uri:String = null)
构造连接到指定端点 URI 的通用 Channel 实例。
Channel
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
  
子类应覆盖此方法以应用单个通道可能需要的任何设置。
Channel
  
connect(channelSet:ChannelSet):void
将 ChannelSet 连接到 Channel。
Channel
  
断开 ChannelSet 与 Channel 的连接。
Channel
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
如果 Channel 已连接,则向服务器发送 CommandMessage 以进行注销。
Channel
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
  
send(agent:MessageAgent, message:IMessage):void
向其目标对象发送指定的消息。
Channel
  
setCredentials(credentials:String, agent:MessageAgent = null, charset:String = null):void
将凭据设置为指定的值。
Channel
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
受保护的方法
 方法定义方
  
处理失败的内部连接并为 Channel 调度 FAULT 事件。
Channel
  
处理成功的内部连接并为 Channel 调度 CONNECT 事件。
Channel
  
通过调度 ChannelFaultEvent 处理连接超时。
Channel
  
处理失败的内部断开连接并为 Channel 调度 FAULT 事件。
Channel
  
disconnectSuccess(rejected:Boolean = false):void
处理成功的内部断开连接并为 Channel 调度 DISCONNECT 事件。
Channel
  
处理对用于管理应用程序的初始 Channel 连接的保护条件的更改。
Channel
  
为 Channel 的 send() 方法返回适当的 MessageResponder。
Channel
  
将 Channel 连接到其端点。
Channel
  
internalDisconnect(rejected:Boolean = false):void
断开 Channel 与其端点之间的连接。
Channel
  
通过 Channel 发送 Message 并将响应传送到 Responder。
Channel
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
  通道连接到其端点后调度。Channel
  通道与其端点断开连接后调度。Channel
  通道出错后调度。Channel
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  在通道从其端点接收到消息时调度。Channel
  在通道的某一属性发生更改时调度。Channel
属性详细信息
authenticated属性
authenticated:Boolean  [只读 (read-only)]

指示此通道是否已经过身份验证。

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



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

提供对连接到 Channel 的 ChannelSet 的访问。



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

指示此通道是否已与远程目标建立连接。

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



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

提供对此通道的连接超时(以秒为单位)的访问。如果值为 0 或小于 0,则表示连接尝试在客户端上永远不会超时。对于配置为故障转移的通道,此值是等待建立连接所用的总时间。并不会为通道可能尝试连接到的每个故障转移 URI 重置该属性。



实现
    public function get connectTimeout():int
    public function set connectTimeout(value:int):void
endpoint属性 
endpoint:String  [只读 (read-only)]

提供对此通道的端点的访问。此值是根据 uri 属性的值计算得出的。



实现
    public function get endpoint():String
failoverURIs属性 
failoverURIs:Array  [读写]

提供对此通道可能尝试将故障转移到的端点 URI 集的访问(如果端点已群集化)。



实现
    public function get failoverURIs():Array
    public function set failoverURIs(value:Array):void
id属性 
id:String  [读写]

提供对此通道的 id 的访问。



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

提供对通道使用的协议的访问。

注意:Channel 的子类必须覆盖此方法并返回代表其支持的协议的字符串。支持的协议字符串示例有“rtmp”、“http”或“https”。



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

指示此通道是否正在重新连接到其它端点。

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



实现
    public function get reconnecting():Boolean
recordMessageSizes属性 
recordMessageSizes:Boolean  [只读 (read-only)]

Channel 属性确定性能信息注入的级别 - 无论我们注入消息大小与否。



实现
    public function get recordMessageSizes():Boolean
recordMessageTimes属性 
recordMessageTimes:Boolean  [只读 (read-only)]

Channel 属性确定性能信息注入的级别 - 无论我们注入时间戳与否。



实现
    public function get recordMessageTimes():Boolean
requestTimeout属性 
requestTimeout:int  [读写]

提供对通道的默认请求超时(以秒为单位)的访问。如果值为 0 或小于 0,则表示出站请求在客户端上永远不会超时。

请求超时对于要求远程目标做出响应的 RPC 样式消息传递最为有用。



实现
    public function get requestTimeout():int
    public function set requestTimeout(value:int):void
uri属性 
uri:String  [读写]

提供对用于创建此通道的整个端点 URI 的 URI 的访问。URI 可以是部分路径,在这种情况下,将根据需要来计算完整端点 URI。



实现
    public function get uri():String
    public function set uri(value:String):void
构造函数详细信息
Channel()构造函数
public function Channel(id:String = null, uri:String = null)

构造连接到指定端点 URI 的通用 Channel 实例。注意:不应直接构造 Channel 类型,而应创建特定于协议的子类(如 RTMPChannel 或 AMFChannel)的实例。

参数
id:String (default = null) — 此通道的 id。
 
uri:String (default = null) — 此通道的端点 URI。
方法详细信息
applySettings()方法
public function applySettings(settings:XML):void

子类应覆盖此方法以应用单个通道可能需要的任何设置。确保调用 super.applySettings(),以便为该通道应用常见设置。

参数

settings:XML — services-config.xml 文件中适用于此通道的 XML 片段。以下片段包括 <channel> 标签及其所有配置设置:
<channel id="my-amf" type="mx.messaging.channels.AMFChannel">
        <endpoint uri="/dev/messagebroker/amf" type="flex.messaging.endpoints.AmfEndpoint"/>
        <properties>
          <polling-enabled>false</polling-enabled>
        </properties>
      </channel>

connect()方法 
public final function connect(channelSet:ChannelSet):void

将 ChannelSet 连接到 Channel。如果 Channel 尚未连接到其端点,它将尝试连接。Channel 子类必须覆盖 internalConnect() 方法,并在基础连接建立后调用 connectSuccess() 方法。

参数

channelSet:ChannelSet — 要连接到 Channel 的 ChannelSet。

connectFailed()方法 
protected function connectFailed(event:ChannelFaultEvent):void

处理失败的内部连接并为 Channel 调度 FAULT 事件。如果 Channel 包含 failoverURI 值,它将通过按顺序尝试这些 URI 值来尝试自动重新建立连接,直到建立连接或用尽可用值。

参数

event:ChannelFaultEvent — 失败的连接的 ChannelFaultEvent。

connectSuccess()方法 
protected function connectSuccess():void

处理成功的内部连接并为 Channel 调度 CONNECT 事件。

connectTimeoutHandler()方法 
protected function connectTimeoutHandler(event:TimerEvent):void

通过调度 ChannelFaultEvent 处理连接超时。子类型可以覆盖此方法以关闭当前连接尝试,但必须调用 super.connectTimeoutHandler(event)

参数

event:TimerEvent — 计时器事件,用于指示已达到连接超时。

disconnect()方法 
public final function disconnect(channelSet:ChannelSet):void

断开 ChannelSet 与 Channel 的连接。如果 Channel 连接到它的端点,并且不存在其它连接的 ChannelSet,则它将在内部断开连接。

Channel 子类需要覆盖 internalDisconnect() 方法,并在基础连接终止时调用 disconnectSuccess() 方法。

参数

channelSet:ChannelSet — 要与 Channel 断开连接的 ChannelSet。

disconnectFailed()方法 
protected function disconnectFailed(event:ChannelFaultEvent):void

处理失败的内部断开连接并为 Channel 调度 FAULT 事件。

参数

event:ChannelFaultEvent — 失败的断开连接的 ChannelFaultEvent。

disconnectSuccess()方法 
protected function disconnectSuccess(rejected:Boolean = false):void

处理成功的内部断开连接并为 Channel 调度 DISCONNECT 事件。如果断开连接是由网络失败导致的,并且 Channel 包含 failoverURI 值,它将通过按顺序尝试这些 URI 值来尝试自动重新建立连接,直到建立连接或用尽可用值。

参数

rejected:Boolean (default = false) — 如果断开连接应跳过在其它情形下将尝试运行的某一故障转移处理,则为 true;如果应允许运行故障转移处理,则为 false。

flexClientWaitHandler()方法 
protected function flexClientWaitHandler(event:PropertyChangeEvent):void

处理对用于管理应用程序的初始 Channel 连接的保护条件的更改。如果调用了此方法,则表明此 Channel 正在等待尝试进行连接。

参数

event:PropertyChangeEvent — 由 FlexClient singleton 调度的 PropertyChangeEvent。

getMessageResponder()方法 
protected function getMessageResponder(agent:MessageAgent, message:IMessage):MessageResponder

为 Channel 的 send() 方法返回适当的 MessageResponder。必须被覆盖。

参数

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

返回
MessageResponder — 用于处理结果或错误的 MessageResponder。

引发
IllegalOperationError — 如果 Channel 子类不覆盖此方法。
internalConnect()方法 
protected function internalConnect():void

将 Channel 连接到其端点。必须被覆盖。

internalDisconnect()方法 
protected function internalDisconnect(rejected:Boolean = false):void

断开 Channel 与其端点之间的连接。必须被覆盖。

参数

rejected:Boolean (default = false) — 如果断开连接是由拒绝连接或连接超时导致的,并且不应自动尝试重新连接,则为 true;否则为 false。

internalSend()方法 
protected function internalSend(messageResponder:MessageResponder):void

通过 Channel 发送 Message 并将响应传送到 Responder。必须被覆盖。

参数

messageResponder:MessageResponder — 用于处理响应的 MessageResponder。

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

如果 Channel 已连接,则向服务器发送 CommandMessage 以进行注销。当前凭据被清除。

参数

agent:MessageAgent — 要注销的 MessageAgent。

send()方法 
public function send(agent:MessageAgent, message:IMessage):void

向其目标对象发送指定的消息。子类必须覆盖 internalSend() 方法才能实际进行发送。

参数

agent:MessageAgent — 正在发送消息的 MessageAgent。
 
message:IMessage — 要发送的 Message。


引发
InvalidDestinationError — 如果 MessageAgent 或消息都未指定对象,
setCredentials()方法 
public function setCredentials(credentials:String, agent:MessageAgent = null, charset:String = null):void

将凭据设置为指定的值。如果凭据为非空,并且 Channel 已连接,则此方法还会向服务器发送 CommandMessage 以使用这些凭据进行登录。

参数

credentials:String — 凭据字符串。
 
agent:MessageAgent (default = null) — 要登录的 MessageAgent,它将处理登录结果。
 
charset:String (default = null) — 对凭据进行编码时使用的字符集编码。默认值为 null,表示旧字符集 ISO-Latin-1。


引发
IllegalOperationError — 适用于两种情况:已设置凭据并且正在对远程目标进行身份验证;已经过身份验证,但指定的凭据与当前已经过身份验证的凭据不匹配。
事件详细信息
channelConnect 事件
事件对象类型: mx.messaging.events.ChannelEvent
属性 ChannelEvent.type = mx.messaging.events.ChannelEvent.CONNECT

通道连接到其端点后调度。

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

通道与其端点断开连接后调度。

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

通道出错后调度。

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。
message 事件  
事件对象类型: mx.messaging.events.MessageEvent
属性 MessageEvent.type = mx.messaging.events.MessageEvent.MESSAGE

在通道从其端点接收到消息时调度。

MESSAGE 事件类型;当收到消息时调度。

此常数的值为 "message"

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

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
message 与此事件相关联的消息。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
propertyChange 事件  
事件对象类型: mx.events.PropertyChangeEvent
属性 PropertyChangeEvent.type = mx.events.PropertyChangeEvent.PROPERTY_CHANGE

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

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。