请选择 进入手机版 | 继续访问电脑版

默认
发表评论 5
im系统中该怎么去设计连接的用户和channel(会话)的关联关系的?
im系统中该怎么去设计用户和channel的绑定关系?

可以快速的根据用户id检索到channel。根据channel检索到用户。

这个需要俩Map 来实现吗?


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

标签:IM开发
上一篇:即时通讯新手入门:一文读懂什么是Nginx?它能否实现IM的负载均衡?下一篇:[已解决] 求助MobileIMSDK退出账号后,重新登录会报203错误

本帖已收录至以下技术专辑

推荐方案
评论 5
是的,可以用Map来实现一个用户channel引用集合,相当于在线用户列表了。MobileIMSDK就是这么做的,可以去看看源码。
签名: 这天气又阴又闷,不舒适
引用:JackJiang 发表于 2019-07-02 16:26
是的,可以用Map来实现一个用户channel引用集合,相当于在线用户列表了。MobileIMSDK就是这么做的,可以去 ...

Map<userId, Channel > 可以根据用户id检索到channel。
如果我还需要根据 Channel 检索到用户的话。那只能用俩Map 映射关系了吗?
引用:KevinBlandy 发表于 2019-07-02 16:41
Map 可以根据用户id检索到channel。
如果我还需要根据 Channel 检索到用户的话。那只能用俩Map 映射关系 ...

那就用channel对象的hashcode再建立一个map。这有何难
签名: 这天气又阴又闷,不舒适
引用:JackJiang 发表于 2019-07-02 20:04
那就用channel对象的hashcode再建立一个map。这有何难

难是不难。这个我也想到了。我只是觉得这样会不会太浪费内存了。
如果只建立一个Map映射关系。每次都去遍历,又浪费时间。
所以在这个空间和时间的抉择问题上,我想看看大佬们有什么好的解决方案没!
引用:KevinBlandy 发表于 2019-07-03 11:51
难是不难。这个我也想到了。我只是觉得这样会不会太浪费内存了。
如果只建立一个Map映射关系。每次都去 ...

内存肯定不浪费,key=hashcode,value=user_id,这能要多大的内存, 不信你可以自已模拟个一百万(不小了吧)key,看看要多少内存。

至于性能,哈希Map性能本身就很好(学过数据结构肯定都知道),而且程序内的缓存查找性能应该是其它任何方式都比不上的。这块,你完全可以看一下性能测试对比就能明白。同样是一百万的Key,你去看看性能数据。

实践才能出真知,空想没用的。
签名: 这天气又阴又闷,不舒适
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部