写点什么

用 Flex Builder 构建即时聊天应用

  • 2009-09-01
  • 本文字数:1465 字

    阅读完需:约 5 分钟

Activa Live Chat 是一个基于 Adobe Flex 的即时在线聊天应用,它可以让网站的所有者通过即时的基于文本的聊天来轻松地为访问者和客户提供实时在线的支持。它为网站的访问者和聊天人提供了基于 Flex 的 UI 风格,而在后端的聊天服务则是由 PHP 实现。

本文会讲解如何使用 Adobe Flex 和 Adobe Blaze DS 来构建这样一个聊天应用程序。

Flex 通过开源的 BlazeDS 消息服务来支持订阅及发布消息。这个消息服务管理着一些 Flex 客户端可以订阅或发布的目标地址。Flex 提供了 Producer 和 Consumer 这两个组件,让你用来向目标地址发送或订阅消息。如果要订阅消息,你就使用 Consumer 类的 subscribe()方法。当有消息发送到你订阅了的目标地址时,Consumer 上就会触发 message 事件。

使用 BlazeDS 的发布 / 订阅功能是很简单的。下面是一个简单的聊天应用的例子:

复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"                        
        creationComplete="consumer.subscribe()">
        <mx:Script>
            <![CDATA[  
                import mx.messaging.messages.AsyncMessage;  
                import mx.messaging.messages.IMessage;  
                private function send():void  
                {
                    var message:IMessage = new AsyncMessage();  
                    message.body.chatMessage = msg.text; 
                    producer.send(message);  
                    msg.text = "";  
                }
                private function messageHandler(message:IMessage):void  
                {
                    log.text += message.body.chatMessage + "\n";
                }
            ]]>
        </mx:Script>  
        <mx:Producer id="producer" destination="chat"/>
        <mx:Consumer id="consumer" destination="chat"    
            message="messageHandler(event.message)"/> 
        <mx:Panel title="Chat" width="100%" height="100%"> 
            <mx:TextArea id="log" width="100%" height="100%"/> 
            <mx:ControlBar>
                <mx:TextInput id="msg" width="100%" enter="send()"/>
                <mx:Button label="Send" click="send()"/>
            </mx:ControlBar> 
        </mx:Panel> 
    </mx:Application>

消息传递的目的地址是在你的 Flex 应用根下一个叫 messaging-config.xml 中配置的。一个目的地址配置的关键元素是在客户端和服务器交换数据的通道。使用 BlazeDS,消息传递的目的地址通常使用流通道或者轮询通道。

  • 使用流通道,服务器响应会一直保持开放状态,直到通道连接关闭,这样可以让服务器持续向客户端发送变化的数据。HTTP 连接并不是双向的。这意味着一个流 AMF 或者 HTTP 通道实际上需要两个浏览器 HTTP 连接来完成两个方向上的数据发送。一个用于从服务器向客户端发送流响应,另外一个暂态的连接用在当有 数据需要发送到服务器时,从浏览器池中拖拽数据。这个暂态的连接会立即释放回浏览器的连接池中。
  • 如果数据没有立刻准备好(长轮询),就可以通过一个简单的时间间隔或者服务器等待时间来配置轮询通道。无论哪种方式,轮询响应都会完成请求。浏览器 HTTP1.1 连接缺省是持久的,因此浏览器有可能会重复利用已有的 HTTP 连接来发送接下来的轮询请求,这样就能减少轮询带来的网络负载。

请参考 Flex 开发者中心来获取更多关于 Adobe Flex 的入门及深度文章。

2009-09-01 21:006962
用户头像

发布了 127 篇内容, 共 43.6 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

终于,我也到了和Eclipse说再见的时候,难说再见

程序员小跃

Java eclipse IDEA

栀子花,我们应该像你一样静静绽放

小天同学

个人感想 感悟 日常思考

假如孔乙己是程序员

顿晓

学习 程序员 孔乙己

ARTS week 2

锈蠢刀

你的团队是干什么的?

姜戈

团队管理 团队职能

一致性算法 Raft 简述

架构精进之路

raft 一致性算法

python实现·十大排序算法之计数排序(Counting Sort)

南风以南

Python 排序算法 计数排序

Android原生人脸识别Camera2+FaceDetector 快速实现人脸跟踪

sar

联邦学习与推荐系统

博文视点Broadview

人工智能 大数据 学习 推荐系统

提升输入效率第一步——切换双拼

dongh11

效率工具 提升效率 生产力 分享 有趣

源码分析 | Mybatis接口没有实现类为什么可以执行增删改查

小傅哥

Java 源码分析 小傅哥 mybatis 编程思维

突破困局

Neco.W

感悟 工作 创业心态

点击劫持:无X-Frame-Options头信息(修复)

唯爱

Spring Security 两种资源放行策略,千万别用错了!

江南一点雨

Java spring springboot springsecurity

宕机原因千千万,被雷劈了最无奈

田晓旭

码农远程办公指北

大伟

数据与广告系列三:合约广告与与衍生的第三方广告数据监控

黄崇远@数据虫巢

数据挖掘 互联网 广告 移动互联网

好的软件工程原则

pydata

健身一周年:持续锻炼带来无法想象的改变

Taylor

学习 职业 专注 健身

实现元素等高: Flexbox vs. Grid

寇云

CSS css3

软件开发生产率改进之我见(二)

清水

软件工程 软件开发 技术管理

你为什么“啃不动”你手中的技术书?

图灵社区

Java Python 算法 HTTP R语言

管理规划篇

姜戈

团队管理 团队组织

Vol.1 Java初探,新手必看!

pyfn2030

编程 新手指南

揭秘神经拟态计算:缘何成为AI界新宠?

最新动态

多线程与线程安全(实例讲解)

YoungZY

Java 多线程 线程安全

使用<input>标签实现六个格子验证码输入框

AR7

Java vue.js 大前端

redis过期策略和内存淘汰机制

wjchenge

你真的会用Mac中的Finder吗

Winann

macos 效率 App Mac

100天从 Python 小白到大神最良心的学习资源!

JackTian

Python GitHub 学习 Python-100-Days Python-Core-50-Courses

你的团队想做出什么成果?

姜戈

团队管理

用Flex Builder构建即时聊天应用_Java_张凯峰_InfoQ精选文章