首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

blazeds学习札记

2012-11-03 
blazeds学习笔记blazeds学习笔记三Message?service消息服务(Message Service )提供发布(publish)/订阅(sub

blazeds学习笔记
blazeds学习笔记三Message?service
消息服务(Message Service )提供发布(publish)/订阅(subscribe)机制允许Flex 应用程序发布消息、订阅消息终端(messaging destination),从而实现实时数据的推和协作。
     消息终端通常用作streaming频道或者polling频道二种方式.
     使用streaming频道,服务器端会一直响应HTTP请求直到该频道连接被关闭,它允许服务器向客户端不断传送大量的数据。因为HTTP连接是独一无 二的,这实现数据的双向传送,每个streaming AMF或者HTTP频道事实上需要两个浏览器 HTTP连接, 一个连接需要不断处理服务器端与频道紧密相关的客户端的响应。另外需要一个短暂连接,只有当数据需要传送到服务器时,它才脱离浏览器连接池;当短暂连接不 再需要时,它立即被释放回浏览器连接池。
    polling频道可以通过简单的时间间隔或者使用服务器等待来配置,如果数据不马上可用 (长轮循)的话。另外,每次轮循响应完成请求。默认下浏览器HTTP 1.1的连接是持续的,浏览器轮循已有的连接,发送并发的轮循请求,以此来减轻轮循的开销。
   当需要准实时通信时,streaming 频道是最好选择

   但是浏览器对每个session都有连接数限制。不同的浏览器,连接最大数以及对session的处理方式都不一样。

IE中每个session的最大连接数为2。 但如果从开始菜单或快捷方式打开多个IE实例,每个IE实例开启不同的进程并拥有各自session。另外,如果我们通过CTRL+N 开启对已有的IE实例一个新的IE窗口,该窗口将与创建它的IE实例共用一个session 。也就是说,如果程序实例开启不同的进程,我们可以通过HTTP streaming建立不限量应用取得服务器端数据;如果通过CTRL+N开启多个窗口,每个session最多建立2个连接。
Firefox中每个session最多建立8个连接。如果从开始菜单或快捷方式打开多个Firefox实例,所有实例开启使用同一进程并共用一个 session。既然浏览器对普通的HTTP请求通常只需要一个连接, 理论上我们可以最多可以建立7个HTTP streaming连接。
   所以当Flex同时有其它应用一起使用的话,建议使用长轮询来处理。实战证明长轮询的反应也是很快的。
配置参考如下:
        <channel-definition id=”my-long-polling-amf” class=”mx.messaging.channels.AMFChannel”>
      <endpoint url=”http://{server.name}:{server.port}/{context.root}/messagebroker/amflongpolling” class=”flex.messaging.endpoints.AMFEndpoint”/>
      <properties>
          <polling-enabled>true</polling-enabled>
          <!– 服务器端的潜伏期,也就是服务器会保持与客户端的连接,直到超时或有新消息返回 –>
          <!– 0意味着,服务器不会等待新的消息  –>
    <!– 值-1 也就是说,服务器等待下去,直到有新消息–>
          <wait-interval-millis>-1</wait-interval-millis>
          <!–  polling-interval-millis = 0 表示客户端请求服务器端的间隔期, 0 表示没有任何的延迟 –>
          <polling-interval-millis>100</polling-interval-millis>
          <!–  表示服务器能承受的最大长连接用户数,超过这个限制,新的客户端就会转变为普通的轮询方式 –>
          <max-waiting-poll-requests>50</max-waiting-poll-requests>
      </properties>
  </channel-definition>

热点排行