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