聊天室一般多久刷新一次?

callmesai 2011-04-27 05:33:20
用ajax做了一个聊天室~刷新时候读取ID>当前最新ID的数据~然后追加到DIV显示~

现在是正常状态每秒刷新一次~发表成功后自动刷新一次~貌似觉得这样数据库负担很大~

请问多久刷新一次比较合理?或者有没有其它更好的方法?~

谢谢!!
...全文
243 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
callmesai 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 theforever 的回复:]
想设置昵称的话,提供一个设置框就可以了。看下一般的聊天程序,不都有吗。
如果想自动记忆,不必每次都输入的话,就在服务端存储一下,然后发现该IP已经存有对应的昵称就直接取用,直到客户端主动发起“改名”操作,更新该IP对应的昵称,下次再自动读取,就可以了。
[/Quote]

由于局域网是静态IP~这个我直接匹配JS数组解决了~谢谢~
callmesai 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 laowai250 的回复:]
多少秒完全取决于你的程序。我做的程序是1.5秒刷新一次,所有的聊天记录全部保存在内存中,不去访问数据库的话,读取内存是很快的。

5秒 10秒 让人家怎么聊天?30秒 ? 那不是让人家发一句言就等半分钟??、
[/Quote]

这样的话~不就看不到之前的聊天记录了吗?

我现在默认是允许查询当天的全部聊天记录~
牧羊人之月 2011-04-28
  • 打赏
  • 举报
回复
五秒就行了;其实三秒 也行;毕竟服务器处理数据不是以秒来算的;当然你的所有聊天信息都要保存到内存中
吴少_ 2011-04-28
  • 打赏
  • 举报
回复
3秒到5秒! 我也顺便问一下 像 WebIM 一对一的聊天 刷新是多少秒啊 ?
frankrenping 2011-04-28
  • 打赏
  • 举报
回复
感觉5-10秒好些。
fx_blog 2011-04-28
  • 打赏
  • 举报
回复
3秒,这样感觉会好点.
laowai250 2011-04-28
  • 打赏
  • 举报
回复
多少秒完全取决于你的程序。我做的程序是1.5秒刷新一次,所有的聊天记录全部保存在内存中,不去访问数据库的话,读取内存是很快的。

5秒 10秒 让人家怎么聊天?30秒 ? 那不是让人家发一句言就等半分钟??、
htynkn 2011-04-28
  • 打赏
  • 举报
回复
15秒比较合适,再给个10秒,20秒,30秒,60秒给用户自己选吧
Bannings 2011-04-27
  • 打赏
  • 举报
回复
个人最常见的是5秒
  • 打赏
  • 举报
回复
想设置昵称的话,提供一个设置框就可以了。看下一般的聊天程序,不都有吗。
如果想自动记忆,不必每次都输入的话,就在服务端存储一下,然后发现该IP已经存有对应的昵称就直接取用,直到客户端主动发起“改名”操作,更新该IP对应的昵称,下次再自动读取,就可以了。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 callmesai 的回复:]
能不能读取飞秋里设置的昵称?
[/Quote]
玩呢,JS怎么能读到飞秋的昵称。那样JS就成超级特工了,安全性从何说起。

楼主这种应用的环境,设成3到5秒就行。
同时也没必要存到数据库里(除非需要保留证据),只需要保存一个成员数量在10以内的发信数组(POP旧的,PUSH新的)到APPLICATION里就行了。这样性能就没什么问题了。
ycproc 2011-04-27
  • 打赏
  • 举报
回复
我觉得 应当给一个最低和最高的限制

然后让用户自己设置 这是最好的

callmesai 2011-04-27
  • 打赏
  • 举报
回复
说漏了~只是准备公司内局域网玩玩的~所以时间短些~

PS:对于发言者名字应该怎么处理好?现在我是在JS用数组保存局域网的IP(全部人都是用静态IP)以及对应的姓名~发表的时候再匹配~请问有没有别的更好的方法??能不能读取飞秋里设置的昵称?

谢谢!!
Mr-Jee 2011-04-27
  • 打赏
  • 举报
回复
10/30/60
用户可以选择
默认30秒。

同时,对于聊天室的人数要做相应的控制。
KK3K2005 2011-04-27
  • 打赏
  • 举报
回复
刷新时间动态变化

比如
开始一直是 1秒刷新一次
但是一直没有新的信息返回 则进入延时状态
延时状态下 每次刷新后如果没有返回新的信息 则刷新时间累加 1 可以设个上限 比如最大不超过30秒

如果有信息返回则进入正常状态 刷新时间 变为1
toury 2011-04-27
  • 打赏
  • 举报
回复
5秒

1秒太吃资源了,服务器吃不消吧
Java聊天室程序源码 2 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控聊天内容。 6. 服务器过滤非法内容。 7. 服务器发送通知。 8. 服务器踢人。 9. 保存服务器日志。 10.保存用户聊天信息。 2.2 系统功能模块 2.2.1 服务器端 1.处理用户注册 2.处理用户登录 3.处理用户发送信息 4.处理用户得到信息 5.处理用户退出 2.2.2 客户端 1.用户注册界面及结果 2.用户登录界面及结果 3.用户发送信息界面及结果 4.用户得到信息界面及结果 5.用户退出界面及结果 2.3 性能需求 运行环境:Windows 9x、2000、xp、2003,Linux 必要环境:JDK 1.5 以上 硬件环境:CPU 400MHz以上,内存64MB以上 3.1.2 客户端结构 ChatClient.java 为客户端程序启动类,负责客户端的启动和退出。 Login.java 为客户端程序登录界面,负责用户帐号信息的验证与反馈。 Register.java 为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。 ChatRoom.java 为客户端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java 亲密合作。 Windowclose 为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。 Clock.java 为客户端程序的一个小程序,实现的一个石英钟功能。 3. 2 系统实现原理 当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端 当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。 接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。 当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。 4.1.1 问题陈述 1.接受用户注册信息并保存在一个基于文件的对象型数据库。 2.能够允许注册过的用户登陆聊天界面并可以聊天。 3.能够接受私聊信息并发送给特定的用户。 4.服务器运行在自定义的端口上#1001。 5.服务器监控用户列表和用户聊天信息(私聊除外)。 6.服务器踢人,发送通知。 7.服务器保存日志。 结束语 本文讨论了如何利用java技术开发聊天室系统,基本满足了结构化、界面友好、速度快、安全性以及稳定性等特点。 系统着重研究并实现了网络应用的部分。根据实现的情况看,具有较友好的聊天界面生成效果,以及流畅的网络通信效果。生成的聊天室可以达到基本的聊天要求,具有较高的研究价值。 系统具有目前聊天室的基本功能:包括支持多种头像,字色,语气选择,支持emote,支持私聊,支持在线聊友查找,支持分屏显示,支持用户定制自己的私人头像,支持脏话过滤,支持嘉宾聊天。屏蔽掉自己讨厌的人物,可以给所有聊友发公共信息。具有速度快,高稳定性,占用系统资源少,用户界面友好等特点。 通过毕业设计,发现自己在理论研究和实际工作能力等方面都得到了提高,受益匪浅。同时在老师的指导和课题组同学的共同帮助下,及时总结研究成果,这些无疑会对我今后的工作和学习带来很大的帮助。 这是我的毕业设计,毕业设计论文 还没有 写完 程序不是完全原创的根据 Happychat修改加强的 修改 超过50%
Java聊天室程序 需求分析 2.1 业务需求 1. 与聊天室成员一起聊天。 2. 可以与聊天室成员私聊。 3. 可以改变聊天内容风格。 4. 用户注册(含头像)、登录。 5. 服务器监控聊天内容。 6. 服务器过滤非法内容。 7. 服务器发送通知。 8. 服务器踢人。 9. 保存服务器日志。 10.保存用户聊天信息。 2.2 系统功能模块 2.2.1 服务器端 1.处理用户注册 2.处理用户登录 3.处理用户发送信息 4.处理用户得到信息 5.处理用户退出 2.2.2 客户端 1.用户注册界面及结果 2.用户登录界面及结果 3.用户发送信息界面及结果 4.用户得到信息界面及结果 5.用户退出界面及结果 2.3 性能需求 运行环境:Windows 9x、2000、xp、2003,Linux 必要环境:JDK 1.5 以上 硬件环境:CPU 400MHz以上,内存64MB以上 3.1.2 客户端结构 ChatClient.java 为客户端程序启动类,负责客户端的启动和退出。 Login.java 为客户端程序登录界面,负责用户帐号信息的验证与反馈。 Register.java 为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。 ChatRoom.java 为客户端程序聊天室主界面,负责接收、发送聊天内容与服务器端的Connection.java 亲密合作。 Windowclose 为ChatRoom.java的内部类,负责监听聊天室界面的操作,当用户退出时返回给服务器信息。 Clock.java 为客户端程序的一个小程序,实现的一个石英钟功能。 3. 2 系统实现原理 当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端 当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问。 接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。 当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。 4.1.1 问题陈述 1.接受用户注册信息并保存在一个基于文件的对象型数据库。 2.能够允许注册过的用户登陆聊天界面并可以聊天。 3.能够接受私聊信息并发送给特定的用户。 4.服务器运行在自定义的端口上#1001。 5.服务器监控用户列表和用户聊天信息(私聊除外)。 6.服务器踢人,发送通知。 7.服务器保存日志。
最近利用闲暇时间,作了个简单的聊天室,该聊天室使用 prototype.js (v1.4) 类库,主要应用Ajax技术、Application变量,做到小型架构,页面无刷新,[b]无数据库[/b],能查看在线用户等特点。

刚开始打算用access小型数据库,但考虑到多人在线时,这种轻量级的数据库承受能力将不能胜任存储任务,MSsql又不熟悉,我的空间也不支持,所以只往小型方向开发。所有聊天数据都存入服务器变量中,客户端与服务器的交互采用json的数据结构,效率还是相当高的。

写js也有一段时间了,发现再用vbscript写asp,有点不适应vb的语法,因此服务端application的全部使用Jscript操作。(js真tmd的自由!自由到连个像样子的IDE都没有-_-)。

当前已知的bug:
如果用户在任务管理器里终止ie进程,那么在线用户列表里将不能删除该用户名。(因为body元素的onunload没法运行-_-)

可以改进的地方:
1、客户端每隔n毫秒取一次数据,但当前返回的数据是整个application变量,比较长,可以只取最新的消息。这样可以改进数据交换的效率。
2、因为application不能太大,否则服务器必定挂掉,所以只好设置长度限制,超过n条记录后自动删除之前的消息,自动维护application的长度,听起来似乎是个好消息,但客户端也只能保存n条记录-_-,完全可以把所有记录在客户端缓存嘛。

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧