Code418
2020-09-16 18:39:43 +08:00
以前用 MQTT 搞过,不过最终的感觉是其实 IM 用 MQTT 实现还是挺麻烦的,我不是专门作 IM 的,这部分也是菜,只能讲一些粗浅的地方。其实上面大家都讲的差不多了。
群或私聊本身有自己的 topic,但事实上在客户端进入聊天时再订阅就好,关键在用户需要一个随连线一起订阅的 notify 用的自己的 topic,连上 broker 就必定订阅这个,往这里面 notify 就好。反正你消息包定义定好了你想通知什么都可以。
重点在 notification 的设计上怎么作高效。可以实时发 notify,单纯做到这步的话实现很简单。但是一个群就得先捞完所有群员然后各自发的话,无论是 dispatch 或是实际的 I/O,人多群多的情况下就会非常吃重,这部分看实际业务状况跟想怎么去设计权重与优化。不过单纯用 MQTT 的机制做起来我觉得挺麻烦困难的,本身的使用场景其实就不是常规的 Chatting 。
尤其 IM 还要考虑到实际的离线消息,就更加复杂麻烦跟炸性能。反正我做到这边我就扔着等有时间再优化了,还没时间拆人家的 IM 抄袭(划掉)琢磨人家的设计跟优化……