点击空白处退出提示
astroim
我要开发同款作品详情
关键点:单聊消息存取策略(不支持漫游,当前策略)
参考文章:http://www.52im.net/thread-3887-1-1.html
【写入消息】
消息接受者在线的话,服务器直接把消息写入对方socket,不进行任何持久化存储;离线消息直接写redis,7天有效期,有效期内被读走就立刻删掉。
redis存储:
key: IM:MESSAGE_CACHE:[s_uuid] (s_uuid是待拉取消息的用户,field中只包含别人发给自己的消息。不区分单聊和群聊,或者说field既可能是单聊消息,也可能是群聊消息)
field: 消息体
score:消息体中的send_time(毫秒时间戳)
示例:A给B发送一条消息a1,则向redis写入:
zadd IM:MESSAGE_CACHE:B a1 nowmili
【拉取消息】
自上而下,score(时间戳)从小到大的顺序,一次拉取200条,并判断是否有多余的消息,返回给前端。若有多余消息,则循环拉取,直到取完为止。
- IM:MESSAGE_CACHE这个key首次写入时设置过期时间:7天。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论