默认
发表评论 4
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教IM开发中的会话数据存储和事件触发
阅读(15058) | 评论(4 收藏 淘帖 1
有消息发送,更新会话,socket推送会话列表更新私聊的话没什么问题,因为只推给两个人,把两个人的会话数据从数据库查询一边也没什么大不了的

但是群聊的话,每个人会话是独立的,如果一个群2000个人,写入一条消息就要查询2000个会话,然后推给前端,这貌似压力有点大呀,

所以想请教下这种如何实现
目前能想到的就只有 将会话存储在内存中,更新的时候先更新内存数据,然后再把内存数据推给前端,然后更新数据库,这样查询就没有压力了


内存的结构大概这样
每次当发送消息时修改发送者和接受者的conv,然后将conv推送给客户端,

请教下合适的做法是什么样的呢?

class App {
    HashMap<Integer, Room> rooms;
}

class Room {
    int id;

   String name;

    HashMap<Integer, User> users;   
    // 省略部分字段
}

class User {
   Conversation conv;
[size=13.0667px]

// 省略部分字段[size=13.0667px]
}

class Conversation {
   String id;
   Message lastMessage;


// 省略部分字段
}

class Message{
// 省略部分字段
}

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

标签:求助 IM开发
上一篇:请教IM中群组消息异步入库引发的问题,如何处理最优化下一篇:新手求助: Netty中获取Attribute的时候返回空的问题
推荐方案
评论 4
没看懂你的意思,你是又受了哪篇文章的思路误导?
引用:JackJiang 发表于 2022-11-30 20:16
没看懂你的意思,你是又受了哪篇文章的思路误导?

研究腾讯云IM,里面有一个会话只要更新,就会推送新的会话列表,有点想不通这种咋完成的
引用:lee0607 发表于 2022-12-04 16:37
研究腾讯云IM,里面有一个会话只要更新,就会推送新的会话列表,有点想不通这种咋完成的

这不合理吧,怎么也应该是增量更新才对
引用:JackJiang 发表于 2022-12-04 19:54
这不合理吧,怎么也应该是增量更新才对

我也觉得是,起码应该是哪个更新了推送哪个才合理吧
推送会话列表如果查数据库等话那不浪费资源&#128514;
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部