EMQ 问答社区

是否适用聊天软件开发

最近比较纠结, 想要开发一款自己的聊天软件, 网上的使用技术很多什么样的都有. 不知道emax是否适用开发即时通讯的软件, 效果怎么样, 有什么优势.

可以搞的。私聊、群组都能支持,需要自己设计 Topic 层 和 ACL 来控制。优势的话,MQTT 相对 XMPP 之类的比它轻量很多,而且也很容易支持上100w的客户端。

需要注意的点是:

  1. 群组过多的时,需要压力测试弄清楚这块的 订阅性能、群聊的消息并发性能
  2. 群组的 ACL 控制可能需要应用层来控制(可能是通过写 ACL 到 MySQL 或者 内置数据库的方式)
  3. 离线消息仅在企业版内支持。
1赞

你自己要做的部分主要有三点:

  1. 群组管理。就是维护 groupid → [usernames] 的对应关系,以及管理群成员什么的。

  2. 持久化消息。MQTT CONNECT 报文里面,cleansession 要设置成 false, 就是别用 mqtt 自带的 session 持久化,因为它满足不了需求。自己去写个插件,实现消息存储和再上线的时候的推送。当然可以让客户端自己上来拉取离线消息而不是服务端主动推送,从我的经验上来看 pull 的方式比 push 更灵活。

  3. notification push。根据客户端系统的不同去做 notification push 服务,比如 IOS 的 APNS。