ejabberd默认是不保存聊天记录的, 项目需要保存聊天记录。于是查资料研究折腾了半天, 终于搞定。 下面把过程记录下来,供大家参考:
ejabberd的版本:16.09。
目前的ejabberd版本自带的mod_mam模块,已经实现了保存聊天记录的功能, 需要在配置文件中进行配置。聊天记录保存采用mysql数据库, 之所以采用mysql,是因为mnesia数据库表的最大容量不能超过2GB。
1、修改配置文件/etc/ejabberd/ejabberd.yml
配置mysql数据库,如图:
配置mod_mam模块,如图:
2、在mysql中创建表
在ejabberd源码下找到sql文件夹,里面有个mysql.sql文件。其中archive和archive_prefs是用来存储聊天记录的。
在mysql中先创建ejabberd数据库,然后创建archive和archive_prefs表。
3、两个客户端发送消息进行测试。发现mysql archive里有存储聊天记录,配置成功。
注:以前的版本(具体到哪个版本没有详细考察)没有mod_mam模块。 需要使用ejabberd-contrib模块来存储聊天记录。具体方法见链接http://www.jianshu.com/p/c60f49f1ffe6。