4. 用Go打造现代IM之单聊频道ID技巧

261 阅读1分钟

上一篇我们讲了,IM的底层逻辑就是 发布 → 频道 → 订阅。

单聊怎么抽象成发布→频道→订阅的模式?

单聊频道ID技巧

聊天双方的用户uid 通过@拼接,hash值小的拼在第一位 大的拼在@后。

假设用户A的用户唯一ID(uid)为 abc (hash值:1941671012) 用户B的用户唯一ID(uid)为 kfm(hash值:3859239440)

那么他们双方通讯的频道ID: abc@kfm (因为 1941671012 < 3859239440)

频道成员

用户abc 与 用户kfm聊天 其实就是在频道ID为abc@kfm的群内聊天

所以,abc@kfm频道内的群成员为 用户abc和用户kfm

目的

这样做的目的就是统一IM的底层逻辑,IM底层就只有一条逻辑支线,那就是 发布 → 频道 → 订阅,也就是只有群聊,单聊也是群聊。

添加图片注释,不超过 140 字(可选)

​编辑

我们的开源IM:

悟空IM(通讯层):GitHub - WuKongIM/WuKongIM: 8年积累,沉淀出来的高性能通用实时通讯服务,支持即时通讯(聊天软件)(IM)(Chat),消息推送,消息中台,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景

唐僧叨叨(业务层):GitHub - TangSengDaoDao/TangSengDaoDaoServer: 高颜值 IM 即时通讯,聊天

下一篇: 用Go打造现代IM之千万级IM性能瓶颈分析