原文地址

前言

在使用Openfire + Asmack开发移动 IM 时发现Openfire中的会议室实现的功能并不像QQ群,不能保存离线用户,用户一旦断开连接,就会自动离开会议室。所以想通过开发插件的方法实现类似于QQ群的功能,经过一番摸索,成功实现,写一篇博客记录一下心得,同时感谢那些分享技术心得的朋友。

版本:Openfire 3.9.3 + Asamck 4.0.6

需要实现的功能

  1. MUC会议室保存离线用户
  2. 客户端获取已加入群组列表
  3. 用户每次登录时重新加入列表中的群组并获取各个群组的聊天记录

相关知识和准备

1、 Openfire和XMPP基础
- XMPP维基百科
- XMPP协议分析-原理篇
- Openfire与XMPP协议

2、 编译Openfire源代码
- Openfire3.9.3源代码导入eclipse中开发配置指南
- Openfire开发配置,Openfire源代码配置,OpenFire二次开发配置(这篇文章的源码配置不适合3.9.3这个版本,只是后面的服务器初始配置可以看一看)

成功:

3、 开发Openfire插件
- Openfire插件开发

进入正题,实现以上3个功能:

1、 MUC会议室保存离线用户

除了会议室(群)创建者在创建会议室时邀请加入的会议室成员和在openfire管理后台把用户添加为会议室成员这两个方法外,其他加入会议室的用户的角色都不是会议室成员,他们的信息不会被持久化到数据库中,所以一旦这些用户断开连接,就会自动离开会议室,这就是MUC会议室无法保存离线用户的原因。

所以,MUC会议室保存离线用户的本质便是实现所有用户在第一次加入会议室时自动将用户信息持久化到数据库中,获得会议室成员的角色。具体是在用户第一次加入会议室时将用户存入ofMucMember表中。ofMucMember是聊天室房间成员信息表。

具体实现请参考:
- openfire的MUC改造类似QQ永久群

2、 客户端获取已加入群组列表

具体实现请参考:
- 将Openfire中的MUC改造成类似QQ群一样的永久群

3、 用户每次登录时重新加入列表中的群组并获取各个群组的聊天记录

这一步很简单,不再赘述。

插件下载

Openfire实现QQ群功能相关推荐

  1. openfire 开发QQ群、微信群等固定群插件

    根据实际应用需求,基于openfire xmpp server 开发了完整的IM解决方案插件 1.1.1 用户注册 2 1.1.1.1用户修改个人信息 3 1.1.1.2用户修改密码 4 1.1.1. ...

  2. android获取qq群成员的功能实现的,Android中实现一键推广|加入QQ群功能

    功能实现效果图: 一键推广QQ群.gif 第一步:访问QQ群官方网站 第二步:登录自我QQ 请选择你创建的群 获取你需要的代码(Android代码) 复制代码到Android项目中 qqgroup.p ...

  3. 用QQ群推广网站的方法

    SEO博主:http://blog.sina.com.cn/s/blog_6837182d0100reh6.html QQ是国内最常用的网络通讯工具.也是各种推广方法中比较常用的一种方法.QQ群主要用 ...

  4. 移动端点击加qq好友和加入qq群

    移动端点击加qq好友和加入qq群 写这篇文章主要是在做加qq好友和加入qq群功能时,在移动端ios上遇到了一些问题. 使用qq官方的api,在ios上加qq好友时会跳到app store,不会跳转到q ...

  5. 将Openfire中的MUC改造成类似QQ群一样的永久群

    一.思路 1.新建立永久房间,同时保证房间中的成员存储到"ofmucmember"表当中. 2.新建一个用户登陆监听的插件,这个插件监听用户的登陆行为,同时在用户登陆时查询&quo ...

  6. Android 将Openfire中的MUC改造成类似QQ群一样的永久群

    将Openfire中的MUC改造成类似QQ群一样的永久群 转载于:https://www.cnblogs.com/zhujiabin/p/5814914.html

  7. 微信实现qq群的qq小冰功能

    常玩qq的人应该知道qq群里可以引入一个"聊天机器人"qq小冰,而后可以在群里通过@qq小冰来达到调戏的目的 然而尿性的腾讯除了qq之外还有微信这样一款聊天的软件 本文目的就是注册 ...

  8. python控制qq群_Python3 selenium 实现QQ群接龙自动化功能

    一.环境 环境配置为安装了 selenium 模块的 Python3 ,以及浏览器对应的driver 如果没有安装 selenium ,可以在控制台执行下面的代码 pip3 install selen ...

  9. 互联网早报 | 4月12日 星期一 | 腾讯QQ付费入群功能将停止服务;顺丰王卫否认做社区团购;荣耀今年研发投入10亿美元...

    今日看点 ✦ 王卫回应"做社区团购":顺丰坚决不碰商流 ✦ 荣耀董事长万飚:年中将推重磅产品,今年研发投入10亿美元 ✦ 腾讯宣布:QQ付费入群功能将于4月14日停止服务 ✦ 网易 ...

最新文章

  1. Unity UGUI 小知识
  2. 昵图网服务器系统资源不足,Win7系统提示系统资源不足警告怎么办? - 爱绿豆...
  3. Istio 庖丁解牛六:多集群网格应用场景
  4. 端口聚合Port-Channel
  5. 如何以出售开源软件为生?
  6. chrome vue.js插件文档_前端开发者必备的40个VSCode插件!
  7. linux中c表示字符设备文件符号
  8. error LNK2005: 已经在 app_launcher.obj 中定义
  9. 【Windows10_1809 + Ubuntu_18.04】+【SSD + HDD】双硬盘双系统装机心得分享
  10. 关闭阿里云的短信提醒
  11. easyuefi如何添加引导_UEFI怎么用 UEFI安全启动设置添加方法步骤图解
  12. 嵌入式程序编写方法与规范
  13. (一)航空发动机强度与振动复习纲要
  14. Python实现数字的补数的两种方法
  15. 转:绝对论坛元老,05年注册。告诉你一个真实的魅族
  16. 接口测试的流程和步骤,主要测试哪些方面,测试工具,测试用例,以及测试框架
  17. 2022 斯坦福AI报告:中国霸榜AI顶会,但引用量最低
  18. AIoT方案|机智云NFC “碰一碰”智慧家庭一碰配网解决方案
  19. ES 查询时提示:all shards failed [type=search_phase_execution_exception]
  20. 随笔-Unity部分版本加载AB资源时崩溃问题

热门文章

  1. 2021-11-05几个看盘经验供大家参考:
  2. 2021年化工自动化控制仪表考试题及化工自动化控制仪表新版试题
  3. idea中git版本回滚以及git指令回滚
  4. python更换窗口颜色设置_python – 默认窗口颜色Tkinter和十六进制颜色代码
  5. SMT protel99se快捷键大全
  6. 看steam游戏支持linux的网站,使用Steamy Cats对Linux上的Steam游戏进行分类
  7. cmd安装mysql时出现:计算机中丢失MSVCP120.dll 的解决办法
  8. android Panel控件 抽屉控件
  9. 申请无数个iTunes 帐号的简易方法
  10. 爬取猫眼电影专业版实时数据排行榜