IM Server 链接:simple_im IM Client 链接:simple_client 基本功能: 1.没有是否在线,对朋友就能发消息,如果不在线则存离线,离线保存 7 天。 2.群聊 基本架构参考了 ejabberd,跟它不同的是: 1.协议不用 xml stream 改用 toml,这样节约流量,而且很多没用的协议部分也都删除了,例如出席等,基本都是我重新定义的协议,跟 xmpp 没啥关系,随着需要添加。 2.session 不用 mnesia 而用 ets,说实话 ejabberd 用 dirty_wirte 和 ets 跨节点发消息没啥区别,反而 ets 效率更高。 3.添加了 ack。 4.把 hook 拿掉了,感觉那东西完全就是一个多此一举的东西,效率低不说,代码完全无法阅读,只能在线调试才知道走到哪!! 5.关系数据库用的 pg,驱动是epgsql/epgsql,链接池是我自己写的,简单高效,为什么不用 poolboy,因为这个 driver 的查询支持同一数据库连接的并发查询。
现在的进度: 能实现 1v1 聊天和群聊,不过登录功能是假的,群成员列表也是假数据,因为今天才定下来要采用 postgresql 做关系数据库。现在有了 db migrate 文件,还没写 users 和 groups 的业务逻辑。欢迎大家提意见讨论。