openfire的入门学习

百般思念 提交于 2020-11-27 02:26:39

今年开始到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这几个部分。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!