V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wkong
V2EX  ›  程序员

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

  •  1
     
  •   wkong ·
    tangtaoit · 2023-10-06 09:52:00 +08:00 · 2140 次点击
    这是一个创建于 440 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    上一篇 用 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

    9 条回复    2023-10-07 15:19:23 +08:00
    electronic
        1
    electronic  
       2023-10-06 10:05:02 +08:00
    看起来不错啊,支持一下
    wkong
        2
    wkong  
    OP
       2023-10-06 10:56:20 +08:00
    @electronic 感谢
    asta2
        3
    asta2  
       2023-10-06 13:27:41 +08:00 via Android
    就是聊天室 ID ,聊天室这东西我五年前就写过
    kkk9
        4
    kkk9  
       2023-10-06 14:09:01 +08:00
    本来挺感兴趣的,点进 Github 看简介下面的官网域名,直接 pass 。产品是没名字吗,硬要蹭 github 的品牌名。😓
    wkong
        5
    wkong  
    OP
       2023-10-06 14:29:29 +08:00
    @kkk9 喷的角度很刁钻😂
    Dongli888
        6
    Dongli888  
       2023-10-06 19:32:10 +08:00
    支持一下

    正好我有 2 个域名
    GO.SB
    IM.AR
    2 个域名出售
    moonrailgun
        7
    moonrailgun  
       2023-10-06 22:44:17 +08:00
    我的是重新计算一个会话 id 的,因为如果会话突然想加人的话就会很尴尬,重新计算的话可以把双人会话与多人会话的模式进行同构。减少不必要的分叉

    https://tailchat.msgbyte.com/
    huangzhiyia
        8
    huangzhiyia  
       2023-10-07 08:41:19 +08:00 via Android
    mqtt
    kkk9
        9
    kkk9  
       2023-10-07 15:19:23 +08:00
    @wkong #5 算不上喷,只是个人看不惯。好好的国人产品,蹭别人的厂牌,多么不自信。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5382 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 07:10 · PVG 15:10 · LAX 23:10 · JFK 02:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.