V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lambdaxs
V2EX  ›  程序员

请教下关于 IM 服务的一些问题

  •  
  •   lambdaxs · 2019-10-12 17:27:24 +08:00 · 1592 次点击
    这是一个创建于 1860 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一,IM 服务可以直接用 MQTT 服务(就是在 SDK 里直接集成 mqtt 客户端来收发消息)来做吗? 二,跟自己实现一套私有通信协议相比,有什么局限性或者扩展性的不足? 三,市场上的 IM 产品为什么很少看到用 MQTT 服务直接来做 IM ?

    9 条回复    2019-10-13 13:09:30 +08:00
    lambdaxs
        1
    lambdaxs  
    OP
       2019-10-12 17:28:35 +08:00
    格式有点乱,我再编辑一把,嘿嘿

    一,IM 服务可以直接用 MQTT 服务(就是在 SDK 里直接集成 mqtt 客户端来收发消息)来做吗?

    二,跟自己实现一套私有通信协议相比,有什么局限性或者扩展性的不足?

    三,市场上的 IM 产品为什么很少看到用 MQTT 服务直接来做 IM ?
    b821025551b
        2
    b821025551b  
       2019-10-12 17:34:09 +08:00   ❤️ 1
    因为 MQTT 是基于订阅的,做成 IM 需要太多 topic
    lambdaxs
        3
    lambdaxs  
    OP
       2019-10-12 17:37:30 +08:00
    @b821025551b 嗯嗯 感谢大佬赐教,就是用户数和群组数巨大的时候扩展性存在问题吧
    lambdaxs
        4
    lambdaxs  
    OP
       2019-10-12 17:44:15 +08:00
    @b821025551b 再请教下,mqtt 号称可以支持百万链接,那么我的 im 只有几千人使用的话,用 mqtt 问题不大吧
    b821025551b
        5
    b821025551b  
       2019-10-12 17:45:14 +08:00
    @lambdaxs #3 群组模式没问题,一个群一个 topic 就行了;但是用户单点的话,需要 n(n-3)/2+n 个 topic
    b821025551b
        6
    b821025551b  
       2019-10-12 17:51:17 +08:00
    @lambdaxs #4 可以用,但是单点通讯还是很别扭,不如直接用 websocket
    b821025551b
        7
    b821025551b  
       2019-10-12 17:55:20 +08:00
    哈哈,2000 人的话,2000*1997/2+2000=1999000,直接干到 200 万;不过我这个计算方法都是单 topic 订阅,也许用通配符什么的会降低吧。
    opengps
        8
    opengps  
       2019-10-12 18:02:45 +08:00
    自己实现坑比较多,不过可控性高一点。适合经常写 socket 通信服务的人来避坑
    wangyzj
        9
    wangyzj  
       2019-10-13 13:09:30 +08:00
    我记得阿里那套 IM 就是 MQTT 把
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1042 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:35 · PVG 06:35 · LAX 14:35 · JFK 17:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.