XMPP open - topmi/collect-xmpp-communication GitHub Wiki

服务器端


ejabberd how-to

ejabberd 安装

  • Mac 下直接使用 brew install ejabberd,默认安装到 usr/local/Cellar/ejabberd/ 目录
  • linux/windows 还未具体实践
  • ubuntu 下的安装,可以参考

ejabberd 数据库

ejabberd 相关命令

  • 到安装目录下进入 sbin 目录,mac 下的路径是 /usr/local/Cellar/ejabberd/2.1.13/sbin
  • ejabberdctl start 启动该服务
  • ejabberdctl stop 停止服务
  • ejabberdctl register root localhost password 注册一个新用户, root 替换注册的用户名, password 替换成相应的密码
  • ejabberd.cfg (mac 下的目录 /usr/local/etc/ejabberd/ejabberd.cfg) 需要到该文件下设置一个超级用户, 找到有 acl, admin 字眼的地方,加入相关的用户名
  • 启动成功后访问 ejabbered 管理界面

支持查看在线用户


openfire how-to

openfire 安装, 服务器设置

  • 下载 openfire 安装包
  • 安装过程中会有一些步骤包括 数据库连接信息,服务器设置 等
  • 安装完后访问 openfire WEB管理界面
  • Mac 下需要在 系统偏好设置下面可以找到 openfire 的设置

支持保存聊天记录到数据库

  • plugins 下载界面 下载 Monitoring Service
  • 把该 jar 包复制到 openfire 安装目录, 在 mac 下的目录是 /usr/local/openfire/plugins
  • 或者在 openfire WEB管理界面 的 插件页面找到 Monitoring Service 下载安装
  • openfire WEB管理界面 找到 服务器 -> 档案管理界面 -> 设置档案 启用保存聊天记录选项, 参考设置界面
  • 收发信息主要存到 ofMessageArchive 表
  • 可能的其它方案: 自己在android客户端截取收发信息存到数据库

支持查看在线用户

  • openfire WEB管理界面 找到 用户/组 -> 组 -> 新建组 , 参考设置界面
  • 把需要显示在线状态的用户都放到 friends 组
  • 暂时的结论: 使用 asmack API 包查询在线用户只能是同一组才能被查看到

Android 客户端


Android 客户端测试

  1. 使用 openfire/ejabberd WEB管理界面 或者 ejabberd 命令行 注册几个账号,目的是用于互发信息
  2. 访问 ejabbered 管理界面 , 如果是用IP形式来访问,用户名要用 username@localhost 形式
  3. 目前个人使用 root@localhost, arch@localhost, arly@localhost 三个用户名进行测试
  4. 使用 mac 下 adium 登录测试是否能连接上本地配置好的服务器
  5. 下载 android 代码,修改 host 信息

Web 客户端


  1. 尝试部署一下openfire,看看服务端替换之后,android客户端是否不用改动

  2. 在android客户端上用一个列表列出在线用户(除了当前用户自己),点哪个用户就和哪个用户聊天

  3. 聊天改为可以互相聊天,也就是说android可以收消息也可以发消息

  4. 看看除了文字消息之外,还能发哪些类型的内容(图片?附件文件?音频?)

  5. 研究和已有web服务如何整合的问题,也就是说是否可以用已有的web服务的用户直接作为聊天服务的用户, 是否可以用其他web服务已有的用户名密码来登录。可以尝试查找其他人已经有的好的实践。

  6. 看看服务端是否保存聊天记录。如果服务端不保存聊天记录,怎么自己记。

  7. 如果服务端保存聊天记录,该保存格式是否兼容,切换服务器(比如从 ejabberd 切换到 openfire,聊天记录怎么转移。)

  8. 尝试实现用户看聊天记录的功能。

  9. 看看有没有基础的用户分组机制,简单研究一下


Web 功能

  • 注册,登录
  • 查看用户在线
  • 查看用户聊天记录功能

手机功能

  • 登录
  • 查看在线用户,可以相互聊天
  • 查看聊天记录