Blazeds服务器向客户端实时推送数据配置详解
需积分: 9 192 浏览量
更新于2024-09-13
收藏 42KB DOCX 举报
“Blazeds向客户端推送数据。”
Blazeds是一种强大的 Flex 和 Java 之间的集成解决方案,它允许双向通信,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这种技术在实时应用,如股票交易、在线游戏或者即时通讯中非常有用。
一、配置 StreamingAMFChannel
1. services-config.xml 配置
在 `services-config.xml` 文件中,我们需要定义一个 StreamingAMFChannel,这是一种支持长连接的通道,它能保持服务器与客户端的持续连接,以便服务器可以随时推送数据。以下是一个示例配置:
```xml
<channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
<endpoint url="http://134.160.149.156:8400/blazeds_test/messagebroker/streamingamf"
class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
<properties>
<idle-timeout-minutes>0</idle-timeout-minutes>
<max-streaming-clients>10</max-streaming-clients>
<server-to-client-heartbeat-millis>5000</server-to-client-heartbeat-millis>
<user-agent-settings>
<user-agent match-on="MSIE" kickstart-bytes="2048" max-streaming-connections-per-session="8"/>
<user-agent match-on="Firefox" kickstart-bytes="2048" max-streaming-connections-per-session="1"/>
</user-agent-settings>
</properties>
</channel-definition>
```
- `idle-timeout-minutes` 设为 0 表示不设置空闲超时时间。
- `max-streaming-clients` 指定了该通道可同时服务的最大流式客户端数量。
- `server-to-client-heartbeat-millis` 是服务器到客户端的心跳间隔,保持连接活跃。
- `user-agent-settings` 部分用于针对不同浏览器(如 MSIE 和 Firefox)设置不同的优化参数,如 `kickstart-bytes` 和 `max-streaming-connections-per-session`。
二、messaging-config.xml 配置
2. destination 配置
在 `messaging-config.xml` 文件中,我们需要定义目的地(destination),这将指定数据将被推送到哪里。例如:
```xml
<destination id="tick-data-feed">
<properties>
<server>
<allow-subtopics>true</allow-subtopics>
<subtopic-separator>.</subtopic-separator>
</server>
</properties>
</destination>
```
- `allow-subtopics` 设置为 true 允许使用子主题,这使得可以推送更具体的数据。
- `subtopic-separator` 定义了子主题之间的分隔符,例如这里使用的是点号(.)。
三、Blazeds 数据推送原理
Blazeds 使用 Adobe LiveCycle Data Services (LCDS) 的基础架构,通过 HTTP 长轮询或 Flash Socket 实现数据推送。当客户端连接到服务器后,服务器会保持连接直到有新数据可用。一旦数据准备好,服务器会立即发送,而不是等待客户端请求。
四、客户端处理
在 Flex 客户端,你可以创建一个 `MessageBroker` 对象并订阅特定目的地来接收推送的数据。当服务器推送数据时,客户端会收到 `Message` 事件,并可以在事件处理器中处理这些数据。
```actionscript
var broker:MessageBroker = MessageBroker.getInstance();
broker.subscribe("tick-data-feed", onMessageReceived);
private function onMessageReceived(event:MessageEvent):void {
var message:Message = event.message as Message;
// 处理接收到的消息
}
```
Blazeds 的数据推送功能是通过精细配置和客户端服务器间的实时连接实现的,这极大地提高了应用程序的交互性和实时性。不过,需要注意的是,这种持续的连接可能会增加服务器负载和带宽消耗,因此在实际应用中需要权衡性能和资源使用。
2017-11-03 上传
2012-12-12 上传
2022-07-05 上传
2010-06-23 上传
2020-09-19 上传
2009-08-14 上传
2011-08-26 上传
2010-12-22 上传
dwyin123
- 粉丝: 1
- 资源: 78
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码