对于基于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-DOMAINOBJECT-DAO的定式(实际上SPRING并不是一个支持DDD的FRAMEWORK).但是如果不注重CACHE的使用以及真正在分析和设计时使用DDD(例如采用聚合根控制对整个聚合对象的访问实现针对聚合对象CACHE的FLUSH)的方式,很容易陷入以DB为中心的思考方式,即"80%的业务都是CRUD90%的业务都必须和DB交互",这是第1点.第2点,比如在做WEB2.0,甚至游戏这种对数据的即时性要求很高,大部分操作在内存的系统的时候,没有了DAO或者不需要频繁调用DAO,应该怎样分层.比如在做这个聊天程序的时候,第1版完成时我发现由于没有DAO,因此没有第1时间就将业务逻辑从控制器中分离,即SERVLET里有很多和业务相关的代码,最后通过不断地重构分离了,不过还是看得出自己的OO思维还不够成熟.

java web聊天室相关推荐

  1. java web聊天室论文_基于javaweb聊天室.doc

    基于javaweb聊天室.doc 南嗦岌凌*4 文(设计) 本科生毕业论 题 目:基于Java网页版聊天室的设计与实现 姓名:陈义旺 学院:理学院 专业:信息与计算科学 班级:信科092 学号: 指导 ...

  2. java web聊天室原理_java web利用mvc结构实现简单聊天室功能

    简单聊天室采用各种内部对象不适用数据库实现. 一个聊天室要实现的基本功能是: 1.用户登录进入聊天室, 2.用户发言 3.用户可以看见别人发言 刚才算是简单的需求分析了,现在就应该是进行mvc结构的设 ...

  3. java web 聊天室_Java和WebSocket开发网页聊天室

    小编心语:咳咳咳,今天又是聊天室,到现在为止小编已经分享了不下两个了,这一次跟之前的又不大相同,这一次是网页聊天室,具体怎么着,还请各位看官往下看~ 一.项目简介WebSocket是HTML5一种新的 ...

  4. java web聊天室论文_基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述(样例3)...

    <基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc>由会员分享,可免费在线阅读全文,更多与<基于Java网页版聊天室的设计与实现毕业论文含开题报告及文献综述& ...

  5. java web聊天室论文_基于java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc...

    基于java网页版聊天室的设计与实现毕业论文含开题报告及文献综述.doc 还剩 52页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价 ...

  6. java web聊天室原理_java web实现简单聊天室

    目标 servlet.jsp实现简单聊天室,用户通过浏览器登录后进入聊天室,可发送消息进行群聊,点击聊天信息框中的用户名可实现拍一拍功能. 基础知识 数据的存取 setAttribute / getA ...

  7. java web聊天室论文_基于Java网页版聊天室的设计与实现毕业论文含开报告及文献综述.doc...

    基于Java网页版聊天室的设计与实现毕业论文含开报告及文献综述 本科生毕业论文(设计) 题 目: 基于Java网页版聊天室的设计与实现 姓 名:学 院: 理学院 专 业: 信息与计算科学 班 级: 信 ...

  8. java web聊天室私聊map_java websocket聊天室示例(springboot)

    [实例简介] [实例截图] [核心代码] package com.example.demo; import java.io.IOException; import java.text.DateForm ...

  9. JAVA版聊天室小软件

    这是一篇关于JAVA的聊天室室小软件,用的swing的技术同时也用到了socket.今天发布出来,希望能帮到大家. 文章目录 开发环境 项目结构 下载地址: 一.运行画面展示 二.代码部分 1.客户端 ...

最新文章

  1. 影响视频会议效果的因素及案例分析
  2. Jquery操作下拉列表和复选框,自定义下拉
  3. 十、开始进入PowerBI的世界
  4. Spring @PostConstruct和@PreDestroy实例
  5. 就有趣,Python生成字符视频
  6. Spring中HibernateTemplate类的使用
  7. android,PHP解析JSON数组,JSONArray,JSONOject,乱码
  8. hdu Robberies 2955 01背包
  9. 计算机技术基础的心得体会,计算机技术基础学习心得体会5篇范文.docx
  10. 当前不会命中断点 还没有为该文档加载任何符号
  11. Linux字符设备驱动详解
  12. 单片机 最小系统原理图
  13. Python数据分析案例-消费者用户画像
  14. 中断linux命令快捷键_Linux常用快捷键和基本命令
  15. 利用大数据打造智慧港航运
  16. 深度学习中的tf.nn.softmax(logits, axis=1)以及tf.argmax(prob, axis=1)两个函数的参数以及用法
  17. DailyFi - 9.20|NFT 平台 Vera 将于明日在 Polkastarter 上 IDO
  18. 推荐:几款优秀的数据挖掘工具
  19. Iscrool下拉刷新
  20. 学通信工程兼修计算机,创名堂 | 第二期创名堂ARES战队

热门文章

  1. 【前端】使用wow.js这个插件(实现页面动画效果),提高前端开发效率。
  2. 应用支持向量机(SVM)实现图像分类——Python
  3. 品牌数据银行分析师考试通关指南
  4. 2022年运动鞋服行业的发展趋势
  5. 用bat脚本批处理多个应用或文件
  6. 高通骁龙芯片资料和开发工具下载
  7. 天载股票开户芯片业布局升级 难解汽车缺芯“近渴”
  8. MFC 类向导 异常来自 HRESULT:0x8CE0000B
  9. Linux文件系统的目录结构详解(转)
  10. 防止页面刷新过多js_JavaScript多种页面刷新方法小结