原创

blazeds学习笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/caodaoxi/article/details/83696405
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>
展开阅读全文

没有更多推荐了,返回首页

博客模板©2019 由CSDN提供 模版主题为:skin3-template by CSDN官方博客 设计