之前的聊天室存在几个问题:
1.基于请求响应模型很难实现RIA,大部分工作和压力还是在服务器端,客户端无非就负责定时发送AJAX请求再显示
2.对于RIA的要求,使用JS,即使采用一些AJAX FRAMEWORK,后期代码仍然会难以维护.针对自己来说,即使是对JS比较熟悉,但因为和JAVA语言类型的不一致,在编程的风格以及规范上还是无法做到和JAVA一样的专业.
基于这2个问题,我选择使用FLEX来代替HTML实现RIA.同时FLEX对JAVA的支持非常好,提供了多种通信方式(甚至采用AJAX bridge能和JS进行交互),并且使用AS的话,语法,编码规范很相似,甚至也提供了实现MVC的 FRAMEWORK.那么,改造后的聊天室,JAVA只实现后台部分,前台全部由FLEX处理.
基本如下:
改动的地方其实也并不多,实现思路如下:
1.在服务器端专门建立一个JAVABEAN充当向FLEX发送消息的JSON对象,如下:
public class ChatUserJson {
private String channel;//频道
private String from;//发送方
private String toWho;//接收方
private String content;//内容
.......
}
2.取消让新用户看到之前消息的功能,每次在接收聊天信息的处理中都将当前用户聊天索引号和当前聊天集合中最大的索引号作比较,如果前者小于后者,则表示有新的信息发出.这时才将这条新的消息以JSON的格式返回给客户端.
3.客户端如果接收到JSON格式的数据,则使用JSON.decode进行转化,然后做字符串的解析
4.分频的实现:解析聊天信息字符串时按频道将信息放入对应的数组,需要时从数组中取出,同时定时清除数组元素
这样做了之后,首先服务器压力减少很多,每次只发送1条消息,处理字符串的工作由客户端来完成.同时,使用FLEX,只需要下意识地按MVC稍微对代码分下层就很容易扩展和维护.
存在的缺陷:FLEX目前的版本对图文混排支持很不好,使用TextArea的话,对<img标签的处理是自动换行,因此表情的实现很困难.其次,由于聊天信息集合是放在APPLICATION,因此集群时无法获得.解决的办法:对于第1点可以等待新版本的FLEX(据说有个TEXTVIEW组件专门实现图文混排)或者更换表现思路(采用容器嵌套组件的形式 每段话每个图片都解析后生成相应的组件动态添加到一个容器内 只不过实现起来很复杂 还需要自己计算宽度和高度以控制格式).对于第2点,可以将聊天从整个系统中分离出去,或者不使用应用服务器级别的CACHE.
- 大小: 23.1 KB
分享到:
相关推荐
本项目“基于Java+Flex实现的聊天程序”提供了一种有效的解决方案,它结合了Java的强大后端处理能力和Flex的富互联网应用程序(RIA)前端展示技术,实现了高效的聊天功能,包括群聊、私聊以及多房间切换。...
- 添加SWFLoader组件:由于聊天室可能包含多个功能模块,我们可以通过SWFLoader组件加载其他SWF文件以实现模块化开发。 2. **用户界面设计** - 输入框与发送按钮:设计一个简洁的用户界面,包括输入框让用户输入...
下面将详细介绍Flex和Java在聊天室实现中的关键知识点。 **1. Adobe Flex** Adobe Flex是一种开源的SDK,用于构建富互联网应用程序(RIA),主要基于ActionScript语言和MXML标记语言。在聊天室中,Flex主要负责创建...
Flex与Java通信是Web开发中的一个重要技术组合,它允许用户在浏览器端利用Flash的富互联网应用(RIA)特性,通过ActionScript与服务器端的Java应用程序进行数据交互。本压缩包包含了一个完整的Flex与Java通信的示例...
1. **Flex**:Flex是一种开源的富互联网应用程序(RIA)框架,主要用于构建具有丰富图形界面和交互性的Web应用。它基于ActionScript编程语言和Flex SDK,可以创建可跨浏览器运行的Flash应用程序。 2. **BlazeDS**:...
4. 实时通信:通过WebSocket等技术,Flex能实现低延迟的实时通信,如聊天室、在线游戏。 三、Flex的组件库 Flex包含大量预定义的UI组件,如Button、Label、TextInput、List等,这些组件可快速构建常见的Web界面元素...
本项目采用Adobe Flex作为前端展示层,Java Servlet作为后端处理层,模拟实现了类似QQ的聊天室功能。Flex是一款强大的RIA(Rich Internet Application)开发框架,它基于ActionScript编程,能创建富交互式用户界面。...
实际学习时,你可能会从创建基本的Flex项目开始,然后逐步添加聊天功能,实现用户注册、登录,创建和加入聊天室,发送和接收消息,到最后的测试和部署。如果能访问到原文链接,将能得到更详尽的步骤和示例代码。
标题中的“flex结合spring activemq做了一个简易聊天室”涉及到的是使用Adobe Flex技术构建前端UI,通过Spring框架与ActiveMQ消息中间件进行通信,实现一个简单的聊天室应用。这个项目是一个很好的示例,展示了如何...
Flex多人多房间聊天室是一种基于Adobe Flex技术和Red5服务器实现的实时在线交流平台。这个系统允许用户进入不同的房间进行互动沟通,提供了丰富的社交体验。在本文中,我们将深入探讨Flex和Red5技术以及如何利用...
- **实时消息协议(RTMP)**:支持实时数据传输,对于构建聊天室、游戏等实时交互式应用非常有用。 - **代理服务**:允许Flex应用程序安全地访问后端资源。 - **服务端生成PDF**:简化了从服务器端生成PDF文件的过程。...
标题 "red5+flex实现超简易群聊天功能" 指的是使用Red5服务器和Flex前端技术构建一个简单的多人在线聊天室的应用。这个项目可能是为了展示如何整合这两种技术来创建实时交互的Web应用。 Red5是一款开源的Java流媒体...
描述中提到“flex的网络通讯lcds教程,适合初步接触flex网络编程人员”,这表明这个教程主要面向初学者,旨在教授如何利用Flex和LCDS实现网络通信,以便在Flex前端和Java后端之间传输数据。 在标签中,“flex”再次...
然而,对于需要实时更新数据的应用,如聊天室、股票交易系统或者在线游戏,这种模式并不适用,因为它无法主动将新数据推送给客户端。为了解决这个问题,引入了消息推送技术。 Flex是Adobe开发的一种富互联网应用...
Flex与Java整合是一种常见的技术方案,它允许在前端使用Adobe Flex构建富互联网应用程序(RIA),同时利用后端的Java技术处理复杂的业务逻辑和数据管理。这种整合方式为开发者提供了强大的跨平台开发能力,使得Web...
【mxrose视频聊天室JSP版】是一款基于Flex技术和JavaServer Pages(JSP)开发的在线视频聊天系统。这个系统提供了实时的视频和音频通信功能,让用户能够进行面对面的交流,增强了网络社交的互动性。Flex是Adobe公司...