实时聊天的记录存储问题讨论

我要实现一个实时聊天的需求,我在想微信这种聊天记录是不是要有一个前端的数据库,还是直接用缓存?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 17

微信?微信不是服务器存的吗[dog.jpg]

3年前 评论

如果不在线,发送的消息,应该是存储在服务器端的,上线了,把数据推送过去,并删除服务端的缓存数据

2个手机 a,b

a 手机发送 hello, B 手机关闭网络

发完消息 a手机关闭网络,5分钟后 B 手机打开网络,接收到消息 hello(B接收消息的时间是A发送消息的时间)

A 没网,B也可以收到消息,说明消息在服务器有存储或缓存的

微信宣称:不存储用户消息

3年前 评论
勇敢的心 (楼主) 3年前
MArtian 3年前
kis龍 (作者) 3年前

file

QQ 这个有些复杂,咱们实现起来有难度,聊天内容多的话,可以考虑缓存,我做过的一个小程序实时聊天内容较少,没有用缓存,发送内容->服务器->返回成功->前端重新拉取双方的聊天记录,可以实现实时聊天功能之后再优化

3年前 评论

这不是后端考虑的事情,移动端都有本地缓存啊,你手机清理内存时没见到过吗

3年前 评论

缓存吧,不然手机微信怎么会好几个G,而且离线也能看呢

3年前 评论
勇敢的心 (楼主) 3年前
Mutoulee 3年前

微信这种的聊天记录是前端本地存储的。
而且应该有一个大概的加密,不可能手机丢了,别人通过文件就可以看到你和谁聊过什么。
大概思路就是微信用户自带 secret,与本地存储的 key 相匹配,才会读出用户的历史聊天记录。

3年前 评论

我摊牌了,我想直接找个包,而不是你们在这给我说要怎么怎么实现 :joy:

3年前 评论
jenkincei

个人见解。
微信,所有消息通过服务端(审计),客户感知,点对点在线本地存储,点对点对方不在,服务端存储已收标识,实现起来其实还是服务端存储,只是不提供消息记录api。关于扣扣,只是客户感知不同,微信在此基础上服务端架构缓存优化。

3年前 评论

我用数组对象存储的 :sweat_smile:

[{xxxId:{chatList:[]}}]

新消息push进去,超过一定量删除旧的,后来觉得麻烦继续读服务器

3年前 评论

微信不存服务器的吗,那怎么做到多端同步的呢。就是即使我PC有段时间不登陆了依旧可以同步以前手机上的消息。

3年前 评论
Su 3年前

缓存啊 然后每天定时入库

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!