今年开始到5月都在学习和使用openfire进行公司新的项目开发,这里正好整理一下学习笔记。

openfire是什么?

Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。

安装openfire,这个网络上面教程很多,安装也很方便,只要有jre环境就ok,就不多做说明了。

openfire采用xmpp协议,底层怎么交互可以不用研究,反正就是按xml的协议进行消息的交互。xml的好处就是扩展性强,缺点应该就是冗余

公司用的java开发,这里就涉及到openfire提供的api包,在java是smack,这是一个封装了很多消息,事件的包,使开发openfire变的相当快速。

再讲解一些openfire中的一些基本概念:

jid: node@domain/resource,这就相当于唯一标示

(1) 名(domain identifier);openfire服务器的名称

(2) 点(node identifier);用户的名称

(3) 源(resource identifier).资源,可以理解为可以通过多种软件连接openfire,那个软件的标示

3个基础包

Presence:出席包,用来告知服务器是上线还是下线等状态信息

用枚举类型Presence.Type的值表示:
 available -- (默认)用户空闲状态
 unavailable -- 用户没空看消息 
 subscribe -- 请求订阅别人,即请求加对方为好友 
 subscribed -- 统一被别人订阅,也就是确认被对方加为好友 
 unsubscribe -- 他取消订阅别人,请求删除某好友
 unsubscribed -- 拒绝被别人订阅,即拒绝对放的添加请求 
 error -- 当前状态packet有错误
 内嵌两个枚举类型:Presence.Mode和Presence.Type.
 可以使用setStatus自定义用户当前的状态(像QQ一样的)

U:<presence from='alice@example.com/work'to='support@workgroup.example.com'>
U:</presence>

Message:消息包

Message.Type:

chat:聊天

groupchat:群聊

headline:在线消息(对方如果不在线不会保存)

< message to= ‘lily@jabber.org/contact’ type =’chat’ >   
< body >  你好,在忙吗< /body > 
< /message >

IQ

一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行响应.例如,client在stream的上下文中插入一个元素,向Server请求得到自己的好友列表,Server返回一个,里面是请求的结果. 
< iq >  主要的属性是type。包括: 
Get :获取当前域值。 
Set :设置或替换get查询的值。 
Result :说明成功的响应了先前的查询。 
Error: 查询和响应中出现的错误。

结构如下所示: 
< iq from =‘lily @ jabber.com/contact’id=’1364564666’ Type=’result’>

主要的几个知识点先介绍,因为这些基础的概念网络上面很多就不多介绍了。

接下去会介绍一下自己在项目中用到的:系统提供的插件fastpath,以及整个的协议交互,还有自己开发插件,jsjac这几个部分。

openfire的入门学习相关推荐

  1. python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  2. MAYA 2022基础入门学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.41 GB |时长:4.5小时 包含 ...

  3. 3dmax Vray建筑可视化入门学习教程

    面向初学者的3Ds Max Vray最佳Archviz可视化课程 从安装到最终图像的一切都将从头开始教授,不需要任何经验 大小解压后:3.25G 时长4h 6m 1280X720 MP4 语言:英语+ ...

  4. Blender 3.0基础入门学习教程 Introduction to Blender 3.0

    成为Blender通才,通过这个基于项目的循序渐进课程学习所有主题的基础知识. 你会学到什么 教程获取:Blender 3.0基础入门学习教程 Introduction to Blender 3.0- ...

  5. Maya游戏角色绑定入门学习教程 Game Character Rigging for Beginners in Maya

    准备好开始为游戏制作自己的角色动画了吗? 你会学到什么 了解Maya的界面 优化并准备好你的模型,为游戏做准备 了解关节以及如何使用它们来构建健壮的角色骨骼,以便在任何游戏引擎中制作动画 了解IK和F ...

  6. 三维地形制作软件 World Machine 基础入门学习教程

    <World Machine课程>涵盖了你需要的一切,让你有一个坚实的基础来构建自己的高质量的电影或视频游戏地形. 你会学到什么 为渲染或游戏开发创建高分辨率.高细节的地形. 基于Worl ...

  7. Blender3.0动画制作入门学习教程 Learn Animation with Blender (2021)

    要求 下载并安装Blender.免费下载和免费用于任何目的. 描述 加入我的动画课程. 在本课程中,我将从头开始讲述在Blender中创建动画场景的过程. 从第一步到最终渲染.在这个课程中,我们将使用 ...

  8. UE5真实环境设计入门学习教程

    大小解压后:4.69G 时长4h 30m 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 虚幻引擎5–面向初学者的真实环境设计 Unreal Engine 5 – Rea ...

  9. ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush

    ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ZBrush全面入门学习教程 Schoolism – Introduction to ZBrush ...

最新文章

  1. 用word2007发布blog
  2. 博客园首页博问闪存新随笔联系订阅管理 随笔- 252 文章- 0 评论- 45 HashPasswordForStoringInConfigFile中的Md5算法并非常用的Md5算法...
  3. 牛客网——华为机试(题15:求int型正整数在内存中存储时1的个数)(Java)
  4. 总结redis中对象的类型与编码
  5. 手机知识:手机快充取决于充电头还是数据线,看完你就懂了!
  6. linux的内核和发行版本号,【编测编学】linux内核及发行版本相关知识
  7. 幼儿园体育游戏电子计算机教案,【幼儿园体育跳圈圈教案】小班体育教案跳圈圈_小班跳圈圈游戏教案_亲亲宝贝网...
  8. MinIO Azure 网关 ​​​​​​​
  9. websocket.onmessage回调没反应_等待A股暴跌回调补四缺口倒计时第二十四天——8月19日总结...
  10. T-SQL Apply的用法
  11. BZOJ.2428.[HAOI2006]均分数据(随机化贪心/模拟退火)
  12. 图说:Windows 8如何关机、重启
  13. PLC编程技术的发展及应用
  14. 深入理解计算机系统 PDF
  15. 奈奎斯特稳定判据matlab处理,控制理论-奈奎斯特稳定判据学习笔记-综合电源技术-世纪电源网社区...
  16. 求1到n的所有质数(素数)
  17. 20年前的网文:我彷徨在唯物主义和唯心主义之间
  18. python批量合并excel文件,后缀名为xls
  19. 测试工程师-入门指南
  20. Python爬取猫眼评分9.5的《海王》的3万条评论

热门文章

  1. CSS 清除浮动的方法
  2. go中生成可执行文件
  3. DIV 布局之上下布局上不动下自动适应
  4. 华为OD机试2022.11.04 只记得两题
  5. 【计算机基础】-2万字总结《计算机速成课》全集笔记
  6. mooc大数据技术原理与应用,对mooc的使用体验
  7. MongoDB语法案例
  8. 电脑重装系统后Win7打印机无法打印该如何处理?
  9. 基于FPGA的数字钟——(三)时钟显示模块(数码管)
  10. window_onload