文档介绍:(RTC),它是基于公开协议XMPP(也成为Jabber)消息的。Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送。,上图中的各个模块绝大多数也是基于Module实现的。为了动态的管理这些Module,Openfire使用了自己的类加载器JiveClassLoader,这样就可以在不重新启动系统的前提下进行Module的安装、卸载和重新加载。,这些Module提供了Openfire的核心功能。所有Module都需要实现Module接口,该接口中定义了模块生命周期中需要调用的方法,如下图所示:,它可以帮助用户轻松的开发高性能和高扩展性的网络应用。MINA提供了一个抽象的、支持各种传输协议的(如TCP/IP、UDP/IP)、基于JavaNIO的异步事件驱动的API。Openfire的ConnectionHandler类继承了MINA的IoHandlerAdaper,他主要负责连接的创建、销毁,以及接收到XML数据包的投递。ConnectionHandler有三个子类,ponentConnectionHandler负责组件与服务器端的连接。-User-Chat多人聊天的消息是绑定在子域conference上的,ponent是MultiUserChatServiceImpl。在多人聊天中,涉及到的实体与关系有:用户、聊天室、用户与聊天室的关系,MultiUserChatServiceImpl就负责这些实体与关系的维护以及消息的投递。,用于与聊天服务器进行交互,比如发送和接收聊天信息。。同一个MUCUser在不同的MUCRoom中可以有不同的角色。、聊天记录等信息。,并负责消息的分发。-Sub发布订阅消息是绑定在子域pubsub上的,对应的模块是PubSubModule。,该节点可以接收或者发布各类信息或通知。在其他发布订阅系统中常被称为TOPIC。CollectionNode可以包含子节点,子节点的类型可以是CollectionNode或者LeafeNode,该类型的节点不能作为发布订阅的目标节点;LeafeNode不能包含子节点,它可以作为发布订阅的目标节点。,包括:ower、publisher、none、outcast。,每次订阅都使用不同的配置(比如过滤关键字不同),NodeSubscription就是描述这些订阅和配置的。如果一个消息满足用户的多个订阅,则只有一份消息被分发给该用户,而不是多个。