包 | mx.messaging |
类 | public class Channel |
继承 | Channel EventDispatcher Object |
实现 | IMXMLObject |
子类 | PollingChannel |
通道是基于特定协议的渠道,用于在 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 | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
endpoint : String [只读 (read-only)] 提供对此通道的端点的访问。 | Channel | ||
failoverURIs : Array 提供对此通道可能尝试将故障转移到的端点 URI 集的访问(如果端点已群集化)。 | Channel | ||
id : String 提供对此通道的 id 的访问。 | Channel | ||
protocol : String [只读 (read-only)] 提供对通道使用的协议的访问。 | Channel | ||
prototype : 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 |
方法 | 定义方 | ||
---|---|---|---|
构造连接到指定端点 URI 的通用 Channel 实例。 | Channel | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void 使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
子类应覆盖此方法以应用单个通道可能需要的任何设置。 | Channel | ||
将 ChannelSet 连接到 Channel。 | Channel | ||
断开 ChannelSet 与 Channel 的连接。 | Channel | ||
将事件调度到事件流中。 | EventDispatcher | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
指示对象是否已经定义了指定的属性。 | Object | ||
指示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
如果 Channel 已连接,则向服务器发送 CommandMessage 以进行注销。 | Channel | ||
指示指定的属性是否存在、是否可枚举。 | Object | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
向其目标对象发送指定的消息。 | Channel | ||
将凭据设置为指定的值。 | Channel | ||
设置循环操作动态属性的可用性。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。 | EventDispatcher |
方法 | 定义方 | ||
---|---|---|---|
处理失败的内部连接并为 Channel 调度 FAULT 事件。 | Channel | ||
处理成功的内部连接并为 Channel 调度 CONNECT 事件。 | Channel | ||
通过调度 ChannelFaultEvent 处理连接超时。 | Channel | ||
处理失败的内部断开连接并为 Channel 调度 FAULT 事件。 | Channel | ||
处理成功的内部断开连接并为 Channel 调度 DISCONNECT 事件。 | Channel | ||
处理对用于管理应用程序的初始 Channel 连接的保护条件的更改。 | Channel | ||
为 Channel 的 send() 方法返回适当的 MessageResponder。 | Channel | ||
将 Channel 连接到其端点。 | Channel | ||
断开 Channel 与其端点之间的连接。 | Channel | ||
通过 Channel 发送 Message 并将响应传送到 Responder。 | Channel |
事件 | 摘要 | 定义方 | ||
---|---|---|---|---|
[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。 | EventDispatcher | |||
通道连接到其端点后调度。 | Channel | |||
通道与其端点断开连接后调度。 | Channel | |||
通道出错后调度。 | Channel | |||
[广播事件] 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
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
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
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
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
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。
|