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 管理界面
支持查看在线用户
- ejabbered 管理界面 找到 Shared Roster Groups 添加一个组, etc: 组名为 friends
- 参考 设置界面
- openfire 设置类似,参考下文
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 客户端
- 具体代码 gitcafe 下载地址
- 采用 asmack 来进行相关的 XMPP 管理操作
- 下载 asmack , 引入其中的 jar 包
- asmack API 文档
Android 客户端测试
- 使用 openfire/ejabberd WEB管理界面 或者 ejabberd 命令行 注册几个账号,目的是用于互发信息
- 访问 ejabbered 管理界面 , 如果是用IP形式来访问,用户名要用 username@localhost 形式
- 目前个人使用 root@localhost, arch@localhost, arly@localhost 三个用户名进行测试
- 使用 mac 下 adium 登录测试是否能连接上本地配置好的服务器
- 下载 android 代码,修改 host 信息
Web 客户端
- 采用 Ruby 方案
- Strophe.js, Demo: Candy-Chat
-
尝试部署一下openfire,看看服务端替换之后,android客户端是否不用改动
-
在android客户端上用一个列表列出在线用户(除了当前用户自己),点哪个用户就和哪个用户聊天
-
聊天改为可以互相聊天,也就是说android可以收消息也可以发消息
-
看看除了文字消息之外,还能发哪些类型的内容(图片?附件文件?音频?)
-
研究和已有web服务如何整合的问题,也就是说是否可以用已有的web服务的用户直接作为聊天服务的用户, 是否可以用其他web服务已有的用户名密码来登录。可以尝试查找其他人已经有的好的实践。
-
看看服务端是否保存聊天记录。如果服务端不保存聊天记录,怎么自己记。
-
如果服务端保存聊天记录,该保存格式是否兼容,切换服务器(比如从 ejabberd 切换到 openfire,聊天记录怎么转移。)
-
尝试实现用户看聊天记录的功能。
-
看看有没有基础的用户分组机制,简单研究一下
Web 功能
- 注册,登录
- 查看用户在线
- 查看用户聊天记录功能
手机功能
- 登录
- 查看在线用户,可以相互聊天
- 查看聊天记录