默认
发表评论 3
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教如何设计IM中的消息信箱?
阅读(259) | 评论(3 收藏 淘帖 1
我目前能想到的方案是使用redis中的list,流程如下

1、当服务端接收到消息后,通过【key+userid】将消息发送到redis中的list中(意味着每一个用户都在redis中有一个属于自己的list

2、然后服务端通知客户端有新的消息达到,客户端去redis中的list拉取消息


请问这种方法可行吗?


即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:IM开发 求助
上一篇:为什么Web端IM一定要用WebSocket,客户端用http发、用SSE收不行?
推荐方案
评论 3
你都能通知客户端了,干吗不直接把消息发过去,而多此一举让它又来拉一下
引用:JackJiang 发表于 2024-09-30 20:26
你都能通知客户端了,干吗不直接把消息发过去,而多此一举让它又来拉一下

我的想法是
     - 如果用户在线,服务端通知客户端来拉取,redis中的消息刚好就删除
     - 如果用户不在线,服务端找不到客户端,消息仍然存在redis中,下次登录先从redis中拉取未读的离线消息
这种设计可行吗
引用:ssdlh 发表于 2024-09-30 20:39
我的想法是
     - 如果用户在线,服务端通知客户端来拉取,redis中的消息刚好就删除
     - 如果用户 ...

技术上肯定可行。只是在线时,你每条消息都要去通知每个群成员,然后群成员再来拉,这显然不经济,明明一个来回搞定的事,搞成两个来回,复杂性增加、延迟增加,在高负载的情况下,这负载效率应该会成倍下降
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部