对于基于web层的聊天室已经不是新鲜事了,但是用Java开发的还是比较少。原因可能是没有一套好的实现机制,我现在就分享一下个人几个月前的一点心得,也算是抛砖引玉了.
基本功能如下:分频道聊天对话,分频道分屏显示,表情符号处理,扩展性还是比较强的
众所周知,实现聊天无非2种方式,1种是保持长连接,1种是使用AJAX定时发送请求即客户端将数据从服务器拉过来.由于对SCOKET的一些异常错误处理自己还不是很熟悉,因此采取的是第2种自己熟悉的方式.
设计思路如下:
1.在WEB层提供一个类似VO的JAVABEAN(也可作为JSON BEAN),提供一些属性封装数据,一个对象代表1条消息
2.利用一个工具类计算聊天索引号例如一个单例类,每个用户进入聊天室后会取得当前最大的索引号放入SESSION作为自己的索引号,当发送消息时索引号会增加并且更新当前用户的聊天索引号
3.实现一个MAP结构来保存聊天记录并放入APPLICATION,我使用的是TREEMAP,键为聊天索引号,值为聊天对象
4.通过聊天对象的属性判断来按频道以及按用户的信息区分显示,通过用户当前的聊天索引号和当前最大的聊天索引号的比较来控制给用户显示N条之前的信息(即进入聊天室后可以看到多少条以前的信息)以及在聊天信息栏里保持显示的N条信息(也可手动清屏).
5.开启一个线程定时清除集合里的聊天对象,也可同时持久化形成聊天记录
6.客户端利用定时器每隔几秒向服务器端发送刷新聊天信息的请求,根据配置由服务器端将N条信息以构造好的HTML格式的字符串的形式发送给客户端显示在一个DIV中
基本思路就是以上,经过实际测试,目前是单台TOMCAT至少能支持350人在线聊天,再多的因为没实际环境,即使使用LoadRunner也得不到太准确的结果.可以扩展的功能有客户端实现字体的改变以及聊天记录查看.
做这个的过程中我的感觉如下:对于多从事企业级开发的JAVA程序员来说,已经自然地会在实现过程中按照J2EE的分层体系进行划分:WEB层 业务层 持久层,或者通过对DDD的学习以及SSH等FRAMEWORK的使用,已经形成了VIEW-ACTION-SERVICE-DOMAIN OBJECT-DAO的定式(实际上SPRING并不是一个支持DDD的FRAMEWORK).但是如果不注重CACHE的使用以及真正在分析和设计时使用DDD(例如采用聚合根控制对整个聚合对象的访问实现针对聚合对象CACHE的FLUSH)的方式,很容易陷入以DB为中心的思考方式,即"80%的业务都是CRUD 90%的业务都必须和DB交互",这是第1点.第2点,比如在做WEB2.0,甚至游戏这种对数据的即时性要求很高,大部分操作在内存的系统的时候,没有了DAO或者不需要频繁调用DAO,应该怎样分层.比如在做这个聊天程序的时候,第1版完成时我发现由于没有DAO,因此没有第1时间就将业务逻辑从控制器中分离,即SERVLET里有很多和业务相关的代码,最后通过不断地重构分离了,不过还是看得出自己的OO思维还不够成熟.
- 大小: 27.2 KB
分享到:
相关推荐
Java Web聊天室是一种基于Web技术实现的在线交流平台,它利用了Java Web技术和WebSocket协议来实现实时的双向通信。WebSocket是一种在客户端和服务器之间建立持久连接的协议,允许双方进行低延迟、高效率的数据传输...
在网上找的视频和资料,完成了一个Java web聊天室的一个实现,主要的技术是采用了jsp+servlet+struts,在本来的基础上,我添加了一个由struts2写的一个注册用户的功能,然后修改了他的登录页面的样式, 这是原来的...
【Java Web聊天室源码详解】 Java Web聊天室是一个基于Web技术实现的在线实时通信系统,主要用于用户之间的即时交流。这个项目使用了MyEclipse作为集成开发环境,它是一款强大的Java应用开发工具,集成了代码编写、...
【标题】:“java web 聊天室源码.rar”是一个包含Java Web聊天室应用程序的源代码压缩包。这个项目可能是一个实现在线实时通信的示例,允许用户通过Web浏览器进行交互式聊天。 【描述】:“java web 聊天室”是一...
【Java Web 聊天室源码解析】 Java Web 聊天室是一个基于Web的实时通信应用,它允许用户通过浏览器进行文字、语音甚至视频的交流。此项目的核心技术主要包括Java Servlet、JSP、WebSocket以及可能涉及的前端技术如...
【Java Web聊天室模块】是基于Java技术栈构建的一个在线实时交流平台的组件,它能够集成到现有的Web项目中,为用户提供即时通讯的功能。在Java Web开发中,聊天室模块通常涉及的技术包括Servlet、JSP、JavaScript、...
总的来说,"java web聊天室系统"是一个涵盖了前端交互、后端处理、数据库管理和网络安全等多个方面的综合项目,对于学习和实践Java Web开发具有很高的价值。通过这样的项目,开发者可以提升自己在MVC架构、Web通信、...
在IT领域,构建一个Web聊天室系统是一项常见的挑战,它涉及到了多种技术栈的综合运用。在这个基于WEB-HTML的聊天室项目中,数据库扮演着至关重要的角色,它存储了用户数据、聊天记录以及系统管理所需的各种信息。...
java web聊天室视频和源码 其他资源可以查看我的其他上传 20个项目之一
【Java Web聊天室系统源码.zip】是一个包含Java Web技术实现的在线聊天室系统的源代码包。这个系统可能包括了服务器端和客户端的交互逻辑,允许用户进行实时的文字、语音或者视频聊天。以下是对该系统可能涉及的关键...
Java Web 聊天室系统设计与实现 Java Web 聊天室系统是基于 Java 语言和 Web 技术所构建的在线实时通讯平台...只有通过系统的设计和实现,我们才能构建一个功能强大、可靠性高、安全性好的基于Java的Web聊天室系统。
Java web聊天室系统的设计与实现-开题报告
Java Web 网页聊天室是一种基于Java Servlet技术构建的在线交流平台,它允许用户通过浏览器进行实时对话。对于想要学习J2EE(Java 2 Platform, Enterprise Edition)开发的初学者来说,这是一个很好的实践项目,因为...
使用Socket协议,局域网内可多人聊天。 不要分,方便大家的学习。
在这个Java Web聊天室项目中,可能包括"注册用户"、"登录"、"发送消息"、"接收消息"等用例。这些用例可以清晰地描述出系统的功能需求。 接下来,使用UML类图来描述系统的静态结构。在聊天室系统中,我们可以定义如...
【Java Web 会话 聊天室】项目是一个典型的基于Java技术栈的Web应用程序,主要涉及了Java Servlet、JSP(JavaServer Pages)以及Web会话管理等核心技术。在这个项目中,用户可以通过一个简单的聊天界面进行实时交流...
【标题】"Web聊天室.zip"是一个包含了一个基于Java开发的简单Web聊天室项目,它可以在Eclipse集成开发环境中顺利运行。这个项目不仅提供了一个基本的实时通信平台,还附带了详细的演示视频和深入的技术文档,方便...
基于Java的Web聊天室系统 基于Java的Web聊天室系统 基于Java的Web聊天室系统