写点什么

用 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:007373
用户头像

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

关注

评论

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

线程的介绍与创建

Java 程序员 后端

绝了!华为技术专家居然把JVM内存模型讲解这么细致!

Java 程序员 后端

聊一聊Java中那些常见的并发控制手段

Java 程序员 后端

腾讯T3大牛-带你深入解析静态分派-&-动态分派原理

Java 程序员 后端

纯干货“Java面试指南+Java核心宝典”!

Java 程序员 后端

线索化二叉树的作用

Java 程序员 后端

终于有人把Java程序员必学知识点整理出来了,令人有如醍醐灌顶

Java 程序员 后端

简单的词法分析器

Java 程序员 后端

算法基础三之链表、栈、队列、递归

Java 程序员 后端

网络编程三-原生JDK的BIO以及应用

Java 程序员 后端

美团二面问源码卒!闭门偷学318页Spring深度手册,再战

Java 程序员 后端

老夫带你深度剖析Redisson实现分布式锁的原理

Java 程序员 后端

肝到吐血!字节跳动技术专家耗时两年整理出1014页SSM开发实战,你还没看过吧!

Java 程序员 后端

第六章(1(1)

Java 程序员 后端

终于等到了!十位Java架构师整理的“阿里P7”养成计划

Java 程序员 后端

终于等到了!阿里内部“性能怪兽”开源了,竟是Nginx

Java 程序员 后端

经典算法(21)毕业生求职必会算法 八皇后问题

Java 程序员 后端

编码习惯-函数编写建议

Java 程序员 后端

第六章(1

Java 程序员 后端

统一处理controller层接口返回的数据

Java 程序员 后端

网关性能大PK,Spring Cloud Gateway让人大失所望!

Java 程序员 后端

网络编程四-原生JDK的NIO及其应用

Java 程序员 后端

聊一聊Java中那些常见的并发控制手段(1)

Java 程序员 后端

线上频出MySQL死锁问题!分享一下自己教科书般的排查和分析过程

Java 程序员 后端

绝了!字节大牛最新上线1940页LeetCode刷题秘籍,堪称完美

Java 程序员 后端

腾讯Java岗面试,竟被“锁”给搞晕了?这样复习

Java 程序员 后端

终于,字节跳动要取消大小周了,我 1

Java 程序员 后端

给Swagger换了个新皮肤,瞬间高大上了

Java 程序员 后端

耗时4个月,阿里架构师打造java面试突击文档,10位朋友已拿offer

Java 程序员 后端

聊一哈,新入如何优雅的跟老板打招呼

Java 程序员 后端

策略模式---动态更改算法

Java 程序员 后端

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