上一篇 用 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
1
electronic 2023-10-06 10:05:02 +08:00
看起来不错啊,支持一下
|
2
wkong OP @electronic 感谢
|
3
asta2 2023-10-06 13:27:41 +08:00 via Android
就是聊天室 ID ,聊天室这东西我五年前就写过
|
4
kkk9 2023-10-06 14:09:01 +08:00
|
7
moonrailgun 2023-10-06 22:44:17 +08:00
|
8
zmaplex 2023-10-07 08:41:19 +08:00 via Android
mqtt
|