openfire开源IM服务器知识分享+社交app实战

本文深入探讨了Openfire开源IM服务器的体系架构、功能模块、数据模型和通信机制。Openfire基于XMPP协议,提供连接管理、消息路由等功能,并支持插件开发以扩展服务。文章还介绍了Openfire的数据库设计、客户端连接过程以及安全机制。此外,提到了社交APP开发中可能用到的XMPP协议和Apache MINA框架的应用。
摘要由CSDN通过智能技术生成

一、      概述

  1. Openfire最主要的功能是实现XMPP服务器,简单来说,openfire为我们提供一个固定的地址,我们只需要向openfire服务器发送标准的XMPP信息(即XML文件流),那么openfire服务器应当给予我们回应,这里的openfire服务器也可以看做一个容器,我们在聊天时,需要在这个服务器上注册一个会话,在会话存在的时间,我们可以实现即时聊天的一些常用功能,比如建立自己的组,添加好友,聊天,以及传送文件等等,同时,openfire服务器也需要实现自己的管理界面,这样openfire服务器也扮演一个web容器的角色
  2. Openfire是开源的实时协作服务器(RTC),它是基于公开协议XMPP(也成为Jabber)消息的。
  3. 使用它轻易的构建高效率的即时通信服务器。
  4. Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送。
  5. Openfire具有跨平台的能力,Openfire与客户端采用的是C/S架构,一个服务器要负责为连接在其上的客户端提供服务。
  6. Openfire客户端有spark, pidgin, Miranda IM, iChat等,用户如果自己开发客户端,可以采用遵循GPL的开源Client端API--Smack。
  7. Openfire服务器端支持插件开发,如果开发者需要添加新的服务,可以开发出自己的插件后,安装至服务器,就可以提供服务,如查找联系人服务就是以插件的形式提供的。

二、      体系架构



 

三、      功能模块



 

  1. Pubsub:Publish/Subscribe,这使得xmpp实体能够在pubsub服务上创建nodes(topics),并且发布信息。一个事件通知将广播到所有订阅了这个节点的实体上。
  2. Pep:(Personal Eventing Protocol)使用XMPP publish-subscribe协议广播状态改变事件、及时消息和出席帐户到其他用户。
  3. Stun:为p2p会话提供地址发现服务,如:媒体传输和UDP包的收发。
  4. Router:内部的路由,把相应的包路由给相应的处理器。
  5. Muc:(Multi-User Chat)用户可以交换文本信息在room或者channel上下文中,版主或者管理员有权踢除用户和禁止用户。
  6. 所有Module都需要实现Module接口,该接口中定义了模块生命周期中需要调用的方法



 

 

 

四、      数据模型

  1. 数据库表设计:详见:

http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/database-guide.html#ofGroup#ofGroup

  1. Openfire的数据库处理采用直接调用JDBC 的方式。核心类为org.jivesoftware.database.DbConnectionManager。数据库的处理与业务处理耦合,没有划分出专门的业务逻辑层。
  2. 3.      ConnectionProvider此类为数据库提供者接口,如需连接mysql、hsqldb等数据库,需首先实现些接口,通常直接调用XXManager中的实例方法,XXManager中又调用的是对应的接口XXProvider的方法,实际操作在该接口的实现类中实现。实现类是动态绑定的(默认的实现类通常命名规则为DefaultXXProvider),在运行时根据ofproperty表中对应配置项值选
  3. org.jivesoftware.database.DbConnectionManager,连接管理类
  4. org.jivesoftware.util
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值