教程 / 1 / 17 / 创建于 3年前
我要实现一个实时聊天的需求,我在想微信这种聊天记录是不是要有一个前端的数据库,还是直接用缓存?
微信?微信不是服务器存的吗[dog.jpg]
如果不在线,发送的消息,应该是存储在服务器端的,上线了,把数据推送过去,并删除服务端的缓存数据
2个手机 a,b
a 手机发送 hello, B 手机关闭网络
发完消息 a手机关闭网络,5分钟后 B 手机打开网络,接收到消息 hello(B接收消息的时间是A发送消息的时间)
A 没网,B也可以收到消息,说明消息在服务器有存储或缓存的
微信宣称:不存储用户消息
QQ 这个有些复杂,咱们实现起来有难度,聊天内容多的话,可以考虑缓存,我做过的一个小程序实时聊天内容较少,没有用缓存,发送内容->服务器->返回成功->前端重新拉取双方的聊天记录,可以实现实时聊天功能之后再优化
这不是后端考虑的事情,移动端都有本地缓存啊,你手机清理内存时没见到过吗
缓存吧,不然手机微信怎么会好几个G,而且离线也能看呢
微信这种的聊天记录是前端本地存储的。而且应该有一个大概的加密,不可能手机丢了,别人通过文件就可以看到你和谁聊过什么。大概思路就是微信用户自带 secret,与本地存储的 key 相匹配,才会读出用户的历史聊天记录。
我摊牌了,我想直接找个包,而不是你们在这给我说要怎么怎么实现 :joy:
个人见解。微信,所有消息通过服务端(审计),客户感知,点对点在线本地存储,点对点对方不在,服务端存储已收标识,实现起来其实还是服务端存储,只是不提供消息记录api。关于扣扣,只是客户感知不同,微信在此基础上服务端架构缓存优化。
我用数组对象存储的 :sweat_smile:
[{xxxId:{chatList:[]}}]
新消息push进去,超过一定量删除旧的,后来觉得麻烦继续读服务器
微信不存服务器的吗,那怎么做到多端同步的呢。就是即使我PC有段时间不登陆了依旧可以同步以前手机上的消息。
缓存啊 然后每天定时入库
我要举报该,理由是:
微信?微信不是服务器存的吗[dog.jpg]
如果不在线,发送的消息,应该是存储在服务器端的,上线了,把数据推送过去,并删除服务端的缓存数据
2个手机 a,b
a 手机发送 hello, B 手机关闭网络
发完消息 a手机关闭网络,5分钟后 B 手机打开网络,接收到消息 hello(B接收消息的时间是A发送消息的时间)
A 没网,B也可以收到消息,说明消息在服务器有存储或缓存的
微信宣称:不存储用户消息
QQ 这个有些复杂,咱们实现起来有难度,聊天内容多的话,可以考虑缓存,我做过的一个小程序实时聊天内容较少,没有用缓存,发送内容->服务器->返回成功->前端重新拉取双方的聊天记录,可以实现实时聊天功能之后再优化
这不是后端考虑的事情,移动端都有本地缓存啊,你手机清理内存时没见到过吗
缓存吧,不然手机微信怎么会好几个G,而且离线也能看呢
微信这种的聊天记录是前端本地存储的。
而且应该有一个大概的加密,不可能手机丢了,别人通过文件就可以看到你和谁聊过什么。
大概思路就是微信用户自带 secret,与本地存储的 key 相匹配,才会读出用户的历史聊天记录。
我摊牌了,我想直接找个包,而不是你们在这给我说要怎么怎么实现 :joy:
个人见解。
微信,所有消息通过服务端(审计),客户感知,点对点在线本地存储,点对点对方不在,服务端存储已收标识,实现起来其实还是服务端存储,只是不提供消息记录api。关于扣扣,只是客户感知不同,微信在此基础上服务端架构缓存优化。
我用数组对象存储的 :sweat_smile:
[{xxxId:{chatList:[]}}]
新消息push进去,超过一定量删除旧的,后来觉得麻烦继续读服务器
微信不存服务器的吗,那怎么做到多端同步的呢。就是即使我PC有段时间不登陆了依旧可以同步以前手机上的消息。
缓存啊 然后每天定时入库