求一个最简单的jsp网页聊天室源码
用jsp+servlet做的聊天记录不经过数据库只保存200条在页面上,我做出来了一个,但是必须每1秒都要把那200条记录重新读一次显然这样不合理,理论上一般只要3个文件...
用 jsp +servlet做的 聊天记录不经过数据库 只保存200条在页面上 , 我做出来了一个,但是必须每1秒都要把那200条记录重新读一次 显然这样不合理, 理论上一般只要3个文件, 一个.java的 servlet 一个.js 的javascript文件 和一个 jsp页面
效率高对服务器压力小的代码 加分!
邮箱地址 232717834@qq.com 展开
效率高对服务器压力小的代码 加分!
邮箱地址 232717834@qq.com 展开
展开全部
才200条记录
最快的方式记录用cycle queue保存到为Application域对象
两个application域的int来记录cycle queue的头和最新的尾
页面的session里面保存当前显示的位置
然后每次取的时候使用ajax直接取当前显示位置到queue tail的记录即可
最快方式.无处其右
---------------------------------------------------------
本团队不提供现成代码 免开尊口
最快的方式记录用cycle queue保存到为Application域对象
两个application域的int来记录cycle queue的头和最新的尾
页面的session里面保存当前显示的位置
然后每次取的时候使用ajax直接取当前显示位置到queue tail的记录即可
最快方式.无处其右
---------------------------------------------------------
本团队不提供现成代码 免开尊口
追问
大师啊 听你这个感觉好朦胧啊~ 你说的 cycle queue可以用 LinkedList吧 ,我之前用的就是LinkedList,
之前我的做法是 用js做了个每1秒执行一次ajax 来拿数据,但这样会每次从集合里拿出200条 并且是每个用户每秒~ 这样的确做到不刷新页面,但不用想也知道这样不合理 对服务器压力太大,
我想不出一个可以做到只有有人发消息 才执行一次ajax的方法, 再有就是取数据,怎样可以做到每个人都只拿到最新的数据,而不用一次拿200条
追答
你没有认真看我的回答
“
两个application域的int来记录cycle queue的头和最新的尾
页面的session里面保存当前显示的位置
然后每次取的时候使用ajax直接取当前显示位置到queue tail的记录即可”
再加上cycle queue就解决了取得最新数据的问题
理论上说 不存在有人发消息才执行ajax 这一点是http协议决定的 除非你使用http长连接
但是那样更消耗系统资源
现在给你说的方案是使用ajax每次请求数据中看有无新消息 没有什么都不返回 有的话 返回最新消息
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询