java如何保存聊天记录?

在写一个javaweb程序的聊天模块碰到一个问题。
聊天中双方的聊天记录如何保存呢?
之前做过类似bbs留言一样的功能,由于留言或者私信量少,留一条就往数据库里存一条也没觉得不妥;可聊天如何存聊天记录呢,总不能全存数据库吧!
以文本日志的方式存记录也感觉不好,记录存到客户端还可以类似qq记录那样每两个用户之间的会话记录成一个文件,可我的目的是把聊天记录存放到服务端,这样的话每两个不同用户间的会话就存一个文件也太多了。
可用文件保存的话,如果用户当前不在线给他发的消息如何记录已读未读,从而方便下次登录的时候把消息推送给他呢?
希望有这方便经验的道友不吝赐教,感激不尽!

3个回答

个人观点:
聊天记录存储到库中,至于存多少,记录生命期是多少,什么时候删除等系统设计上考虑下!
如何记录已读未读,这是状态问题!一般CS是双向通信的,而BS可使用轮询模拟双向通信,或者直接使用websocket进行通信,当web端读取到信息时应答服务器。

pandahii
pandahii 回复sin_404: 文本保存是可以记录状态的,只是在读取和写入时带格式,如XML,JSON等!
大约 3 年之前 回复
pandahii
pandahii 回复sin_404: 这个web前段做的!!!你这个enter是可以在前段进行不抓事件的!!!!
大约 3 年之前 回复
sin_404
sin_404 //用enter键直接发送了,兄弟是怎么换行的,一路空格吗? 先存库,然后定期把数据转移到文本里保存也考虑过,就是想问一下有没有高效的方法
大约 3 年之前 回复
sin_404
sin_404 我是指在用文本保存记录的时候不好记录已读未读,用数据库记录是知道的。聊天记录保存到库中,每发一条数据就往库里存一条记录吗?
大约 3 年之前 回复

用jsp的application+数据库 进行用户信息交互比较合理

kdksz
kdksz 回复sin_404: 如果双方都在线的话可以不用考虑保存问题 直接输出到页面 如果是对方不在线 可以考虑存数据库
大约 3 年之前 回复
kdksz
kdksz 回复sin_404: 如果双方都在线的话可以不用考虑保存问题 直接输出到页面
大约 3 年之前 回复
sin_404
sin_404 我的问题不在于如何进行信息交互,而是交互的记录如何保存
大约 3 年之前 回复

这个你真可以参考一下腾讯qq的做法,因为qq面向的用户众多,所以他是如果是qq会员的话就会把聊天记录以一个xml文件的形式保存在服务器中,
而普通用户是只存在客户端的。所以你要结合你现在做的聊天应用的用户数而做出合适的选择,如果不是太多的话,全部以文件的形式保存在服务器
也占用不了多少空间,而且你也可以比如做个定时更新,定时清除1个月或3个月以前的聊天记录,这样也可以达到减轻服务器压力。

xiaomage1314
人称小马哥 回复sin_404: 在xml里加个标记元,比方说加个type元素为0的时候,表示这条消息未读
大约 3 年之前 回复
sin_404
sin_404 请问如果把记录存到xml里,qq是如何实现把用户未读的消息在用户下次登录的时候发送给用户呢?
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐