上一篇 用 Go 打造现代 IM 之底层逻辑
上一篇我们讲了,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 底层就只有一条逻辑支线,那就是 发布 → 频道 → 订阅,也就是只有群聊,单聊也是群聊。
我们的开源 IM:
悟空 IM (通讯层): https://github.com/WuKongIM/WuKongIM
唐僧叨叨(业务层): https://github.com/TangSengDaoDao/TangSengDaoDaoServer
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.