About channels and endpoints
channels 是客户端的对象用来封装消息以同LCDS服务器的endpoint通信
基本概念
通道类型:(Channel)
普通轮询:
客户端能够以一定时间间隔向服务器反复发送请求。每一次请求时,如果没有响应则宣告结束。直到某次请求收到响应时,即关闭连接。
长轮询:
客户端向服务器发出请求,服务器如果还没准备好数据就不返回请求,知道数据准备好或者超时才返回请求,无需等待客户端发起新的请求再返回响应,因为降低了服务器响应的延迟时间。
端点:(Endpoint)
Configuring channels and endpoints
<channel-definition id="my-nio-amf" class="mx.messaging.channels.AMFChannel"> <endpoint url="http://{server.name}:2880/nioamf" class="flex.messaging.endpoints.NIOAMFEndpoint"/> <server ref="my-nio-server"/> <properties> <polling-enabled>false</polling-enabled> </properties> </channel-definition>
How channels are assigned to a Flex component
如果在MXML编译器设置(compiler option)里设置了“-services”,那么channels会自动通过配置文件来设置 ;否则的话需要在MXML里手动添加 channels。
-services "E:/task/ProducerTest/WebContent/WEB-INF/flex/services-config.xml"
<RemoteObject id="ro" destination="Dest"> <mx:channelSet> <mx:ChannelSet> <mx:channels> <mx:AMFChannel id="myAmf" uri="http://myserver:2000/myapp/messagebroker/amf"/> </mx:channels> </mx:ChannelSet> </mx:channelSet> </RemoteObject>
<mx:AMFChannel id="myamf" uri="/ptp/messagebroker/amf"/> <mx:ChannelSet id="channelSet" channels="{[myamf]}"/> <mx:RemoteObject id="recordSrv" destination="recordService" channelSet="{channelSet}" showBusyCursor="true"> </mx:RemoteObject>
Assigning channels and endpoints to a destination
application-level 的缺省channels设置
<services-config ...> ... <default-channels> <channel ref="my-http"/> <channel ref="my-amf"/> </default-channels> ...
service 的缺省channels设置
<service ...> ... <default-channels> <channel ref="my-http"/> <channel ref="my-amf"/> </default-channels> ...
destination 的channels设置
<destination id="sampleVerbose"> <channels> <channel ref="my-secure-amf"/> </channels> ... </destination>
Fallback and failover behavior
为什么要提供一个channels的集合呢?这样可以在缺省第一个channel通信不成功的时候自动启用第二个channel。
Choosing an endpoint
LCDS提供了两种endpoint,一个是servlet-based 的endpoints和NIO-based 的使用Java New I/O APIs的endpoints。当对于实时连接(real-time connection)要求高的时候应该选用后者。
Servlet-based channel and endpoint combinations
NIO-based channel and endpoint combinations
Choosing a channel
小结
HTTP polling
HTTP long-polling
HTTP streaming
Configuring channels with servlet-based endpoints
polling-enabled:默认是false。
polling-interval-millis:默认是3000。该值表示客户端给服务器发送请求消息的间隔时间。如果设置为0后,客户端在收到服务器的消息后立刻执行相关操作
wait-interval-millis:默认是0。该值表示服务器端等待客户端新消息的时间,需要设置max-waiting-poll-requests为非空值才能生效。0表示不等待客户端的新消息到来而像往常一样发送一个空消息回去;-1表示没有客户端的新消息的到来就不发送消息。
client-wait-interval-millis:默认是0,表示使用polling-interval-millis。1表示没有任何延迟。该值可覆盖polling-interval-millis。
max-waiting-poll-requests:endpoint的属性。默认是0。服务器端可等待响应的线程的最大数目。如果超过这个限制,wait-interval-millis会变为0。
piggybacking-enabled:
login-after-disconnect:channel属性。默认是false。设为true的意思是客户端会在消息发送失败的时候自动尝试重新验证登陆服务器端。
connect-timeout-seconds:客户端连接超时时间。
Configuring channels with NIO-based endpoints
暂时没有学习的需要
Channel and endpoint recommendations
Using LiveCycle Data Services clients and servers behind a firewall