`

java+ajax写的一个实时网络聊天室(整体思路)

阅读更多
首先,这个聊天室是公司产品里的一个功能模块,期间经过了多次改造,最终成型,在速度和性能上都有很大的提升。借此,感谢一下领导的信任和技术支持。废话不多说,进入正题。

   完成的功能点:
   
     1、能支持单聊和群聊功能
     2、单聊时应该提供新消息提醒及聊天用户在线提示
     3、用户登录实时刷新列表
     4、提供简单的表情输入
     5、单聊支持多人同时聊天
     6、当聊天信息达到一定数量时清除一定数量的信息
 
   系统使用到得组件及环境
   jdk 1.6 tomcat 6  memoryCache(放到application也可以实现本部分的功能)
  
   首先,我们先来探讨单聊的情况,群聊其实和单聊技术一样,而且要简单的多,因此主要
介绍单聊的情况。
   当用户点击某人进入聊天室的时候,服务器会根据登录用户到cache服务器去获取是否已经创建于该用户的聊天通道ChatChanal(该对象封装了消息列表和一些标志属性,识别的标志为:接受方用户ID+"_"+聊天发起方ID),如果不存在,则创建该通道,同时初始化聊天信息列表的index。
   用户就进入了与该用户的聊天窗口,页面左边会发送ajax请求在线列表,并定时请求以刷新在线用户列表信息,当用户填写完信息(在此输入框纯粹是一个文本输入框,因此无法图文显示),点击发送按钮后,服务器端获得聊天信息及接受方,首先检查接受方是否在线,如果不在线提醒用户,接受方在线则根据传递过来的参数构建聊天信息对象(期间还做了敏感词过滤),并放入通道的聊天信息列表中。通知检查消息更新线程继续检查。至此发送消息完毕。
   页面定时想服务器检查与该用户的聊天信息是否应经更新(说明一下:我们不是每次都想服务器直接请求消息,是因为效率及性能问题,当请求响应没有消息更新后会锁住线程,直到有新消息发送,这样避免了不断的请求而带来的性能问题,另外我们在session中都设置了与该用户聊天的索引,标志为接受方ID+”_“+索引值,这样每次请求不是请求所有消息,而是请求未请求过的消息,页面消息显示也是动态增加的)
   当检查有聊天信息出现更新时,将请求新消息,并动态添加到页面显示,服务器端接到请求后会根据索引号获取索引号以后的消息(其中有对表情的处理),然后会对该通道的消息列表进行更新检查(如果大于100并且俩人都读了签50条信息则清除前50条并更新索引)

   至此起本的大体思路就是这样了,其中刚开始将消息通道放到memCache中,这样速度不仅没有提高,而且每次唤醒该检查线程后,都不是同一个消息通道,后来将通道放到了application,这样速度反而快了。而且也能正常唤醒检查消息更新的线程了。

   本人只是实习菜鸟,写得不好,老鸟飞过。只是给大家提供一个思路。往后会陆续发出源码,跟大家探讨。希望大家都能有点启发,同时也巩固一下自己。呵呵。。。
分享到:
评论
2 楼 cr2121 2011-09-26  
1 楼 cr2121 2011-09-26  

相关推荐

    Java+ajax写的登录实例

    在这个“Java+ajax写的登录实例”中,我们将深入探讨如何利用这两种技术实现一个实时验证用户登录信息的功能。 首先,让我们了解Java。Java是一种面向对象的编程语言,广泛用于开发服务器端应用。在登录场景中,...

    基于JSP+Ajax+MyEclipse 2015 Java聊天室软件源码+说明文档.zip

    基于JSP+Ajax+MyEclipse 2015 Java聊天室软件源码+说明文档 通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,以此来完成Java聊天室的分析、设计、编码、...

    spring+mybatis+springmvc+ajax简单聊天室

    【标题】"spring+mybatis+springmvc+ajax简单聊天室"揭示了这是一个基于Java技术栈构建的在线聊天室应用。这个项目的核心是利用Spring框架的各组件(Spring、MyBatis、SpringMVC)来处理后端逻辑,并通过Ajax实现...

    java+jsp+ajax+mysql实现在线聊天,简单易懂,可自行添加复杂功能

    java+jsp+ajax+mysql实现在线聊天,简单易懂,可自行添加复杂功能, 怕太过于复杂大家不容易看懂,就写的比较简单,可以根据需求添加复杂的功能,附带有数据库的执行代码,部署,修改一下文件中的数据库登陆密码就...

    基于Java+前端网页bootstrap+后端Java+Ajax+Servlet信息传送的图书管理系统源码+项目说明.zip

    基于Java+前端网页bootstrap+后端Java+Ajax+Servlet信息传送的图书管理系统源码+项目说明.zip基于Java+前端网页bootstrap+后端Java+Ajax+Servlet信息传送的图书管理系统源码+项目说明.zip基于Java+前端网页bootstrap...

    java+servlet+ajax程序

    2. 实时更新:例如聊天应用,Servlet接收并处理消息,Ajax负责周期性检查新消息,实现实时通信。 3. 数据加载优化:在网页加载时,使用Ajax按需加载数据,减少初次加载时的等待时间。 总结,学习并掌握Java、...

    jsp+ajax 无刷新聊天室

    总的来说,"jsp+ajax 无刷新聊天室"的实现结合了服务器端的动态网页技术JSP和客户端的异步通信技术Ajax,提供了一个高效、实时的在线交流环境。这个项目对于学习和提升Web开发技能,特别是前后端交互、数据库操作和...

    Java+ajax写的登录

    本文将详细探讨如何使用Java后端与Ajax前端技术来构建一个登录系统。 首先,让我们理解一下Java和Ajax的基本概念。Java是一种广泛使用的面向对象的编程语言,常用于服务器端开发,提供稳定和高效的服务。Ajax...

    用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax

    2. 使用Eclipse创建一个Struts 2项目,配置Tomcat服务器,编写Action类和对应的JSP视图,编写Ajax请求和响应处理。 3. 实现Interceptor拦截器,对请求进行预处理,如权限验证或日志记录。 4. 利用Ajax实现分页功能,...

    Java项目:嘟嘟网上商城系统(java+jdbc+jsp+mysql+ajax)

    一、项目简述 功能: 商品的分类展示,用户的注册登录,购物车,订单结算, 购物车加减,后台商品管理,分类管理,订单管理等等功 能。 二、项目运行 环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ ...

    jsp+ajax聊天室

    【jsp+ajax聊天室】是一种基于JavaServer Pages (JSP) 和 Asynchronous JavaScript and XML (AJAX) 技术实现的在线实时交流平台。JSP是服务器端的技术,用于生成动态网页,而AJAX则是一种在不刷新整个页面的情况下与...

    自个写的PHP+MySQL+Ajax无刷新文字聊天室

    自个写的PHP+MySQL+Ajax无刷新文字聊天室 《PHP+MYSQL+Ajax无刷文字聊天室》 ***************************************** 功能 :1) 不需要刷新,可实时获取最新信息显示在聊天窗口中 2) 支持回车直接发送...

    asp.net+ajax 制作一个简单的社区聊天室

    在IT领域,构建一个在线社区聊天室是常见的项目实践,它可以帮助用户实时交流,增强社区互动性。本项目使用ASP.NET技术和AJAX技术来实现这一功能。ASP.NET是微软提供的一个强大的Web应用程序开发框架,而AJAX...

    项目组管理系统,Java+json+jQuery+ajax

    【项目组管理系统】是一个基于Java开发的管理工具,旨在提高团队协作效率,简化项目管理和任务分配。这个系统结合了JSON、jQuery和Ajax技术,以实现动态数据交互和用户友好的界面体验。 首先,我们来详细了解Java在...

    ASP+AJAX 无刷聊天室

    【ASP+AJAX 无刷聊天室】是一个基于ASP(Active Server Pages)和AJAX(Asynchronous JavaScript and XML)技术构建的在线实时交流平台。这个系统允许用户在不刷新整个网页的情况下实现聊天功能,提高了用户体验,...

    Asp.net+Ajax做的无刷新聊天室

    综上所述,“Asp.net+Ajax做的无刷新聊天室”项目展示了如何结合这两种技术来创建一个高效、实时且用户友好的Web应用。通过学习和实践此类项目,开发者可以提升在Web开发中的技能,特别是在构建交互式应用方面。

    phpAJAX聊天室

    尽管不是AJAX的一部分,但WebSocket可以提供更低延迟、更高效的实时通信,如果聊天室需要实现更多功能,如一对一私聊或群组聊天,WebSocket会是一个理想的选择。 在安全性方面,考虑到聊天室可能面临的XSS(跨站...

Global site tag (gtag.js) - Google Analytics