• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lambdaxs
V2EX  ›  程序员

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

  •  
  •   lambdaxs · Oct 12, 2019 · 1931 views
    This topic created in 2437 days ago, the information mentioned may be changed or developed.

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

    9 replies    2019-10-13 13:09:30 +08:00
    lambdaxs
        1
    lambdaxs  
    OP
       Oct 12, 2019
    格式有点乱,我再编辑一把,嘿嘿

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

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

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