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

2019-10-12 17:27:24 +08:00
 lambdaxs

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

1504 次点击
所在节点    程序员
9 条回复
lambdaxs
2019-10-12 17:28:35 +08:00
格式有点乱,我再编辑一把,嘿嘿

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

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

三,市场上的 IM 产品为什么很少看到用 MQTT 服务直接来做 IM ?
b821025551b
2019-10-12 17:34:09 +08:00
因为 MQTT 是基于订阅的,做成 IM 需要太多 topic
lambdaxs
2019-10-12 17:37:30 +08:00
@b821025551b 嗯嗯 感谢大佬赐教,就是用户数和群组数巨大的时候扩展性存在问题吧
lambdaxs
2019-10-12 17:44:15 +08:00
@b821025551b 再请教下,mqtt 号称可以支持百万链接,那么我的 im 只有几千人使用的话,用 mqtt 问题不大吧
b821025551b
2019-10-12 17:45:14 +08:00
@lambdaxs #3 群组模式没问题,一个群一个 topic 就行了;但是用户单点的话,需要 n(n-3)/2+n 个 topic
b821025551b
2019-10-12 17:51:17 +08:00
@lambdaxs #4 可以用,但是单点通讯还是很别扭,不如直接用 websocket
b821025551b
2019-10-12 17:55:20 +08:00
哈哈,2000 人的话,2000*1997/2+2000=1999000,直接干到 200 万;不过我这个计算方法都是单 topic 订阅,也许用通配符什么的会降低吧。
opengps
2019-10-12 18:02:45 +08:00
自己实现坑比较多,不过可控性高一点。适合经常写 socket 通信服务的人来避坑
wangyzj
2019-10-13 13:09:30 +08:00
我记得阿里那套 IM 就是 MQTT 把

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/608695

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX