2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

android热更新,扔物线课程怎么样

android 程序员 移动开发

Android通用流行框架大全,大厂面试题汇总

android 程序员 移动开发

分布式事务最经典的七种解决方案

Java 程序员 架构 面试 分布式

android插件化资源冲突,动脑学院课程值得买吗

android 程序员 移动开发

android设计模式书籍,扔物线朱凯

android 程序员 移动开发

Android跨进程通信导论,作为Android开发程序员

android 程序员 移动开发

Android开发岗还不会这些问题,15个经典面试问题

android 程序员 移动开发

Android开发自学技巧!rxjava扔物线

android 程序员 移动开发

Android研发岗面试复盘总结,快速从入门到精通

android 程序员 移动开发

Android经典面试,享学三期Android架构师

android 程序员 移动开发

android设计模式工厂,动脑学院vip2019

android 程序员 移动开发

Android面试必刷的200道真题,全网独家首发

android 程序员 移动开发

Android小程序开发实例,扔物线五期

android 程序员 移动开发

android热更新图片,动脑学院vip最新云盘

android 程序员 移动开发

跨越行业绊脚石,阿里云函数计算发布7大技术突破

阿里巴巴中间件

阿里云 云原生 中间件 函数计算 云栖大会

Android开发面试题目,享学课堂android怎么样

android 程序员 移动开发

英特打造通向E级计算时代“利器”,XPU架构功不可没

科技新消息

android路由跳转,动脑学院怎么样

android 程序员 移动开发

零代码的多方面解读

低代码小观

低代码 零代码 开发工具 开发平台 无代码

Android开发入门教程!扔物线学堂

android 程序员 移动开发

跨越行业绊脚石,阿里云函数计算发布7大技术突破

打破 Serverless 落地边界,阿里云 SAE 发布5大新特性

阿里巴巴中间件

云计算 阿里云 Serverless 微服务 云栖大会

Python代码阅读(第42篇):将输入转换成列表形式

Felix

Python 编程 Code Programing 阅读代码

Android进阶学习资料,扔物线学堂

android 程序员 移动开发

Android开发社招面试解答之性能优化,Android开发面试题及答案

android 程序员 移动开发

Android开发还会吃香吗,Android开发经典实战

android 程序员 移动开发

Android程序员如何有效提升学习效率,不可多得的干货

android 程序员 移动开发

android路由实现,android开发视频百度网盘

android 程序员 移动开发

android适配器ui,享学课堂Android架构师二期

android 程序员 移动开发

Android面试必问!动脑学院vip课程分享2019

android 程序员 移动开发

Android面试相关文章及Github学习资料,总结到位

android 程序员 移动开发

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