今天学习openfire的 connect, session, sessionManager, routingtable
创建连接的入口在 org.jivesoftware.openfire.nio.ConnectionHandler.sessionOpened中
sessionOpened 做的事情有 生成一个xmlParser、NIOConnection, StanzaHandler
1.connect
NIOConnection 类实现org.jivesoftware.openfire.Connection接口
Connection 接口负责发送报文,获取hostAddress,hostName,开始tls连接,一些判断等。
发送报文使用的ioSession 实现的。
2.session
每一个stanzaHandler 中都含有一个session, 下图是整个client session的结构图
LocalClientSession 构造参数有 serverName, xmlParser, connector
ChannelHandler, RoutableChannelHandler, Session, ClientSession 都是接口,他们之间的关系如下
ChannelHandler
动作是处理报文
RoutableChannelHandler extends ChanneHandler
RoutableChannelHandler 的主要动作是获取JID
Session extends RoutableChannelHandler
Session 主要动作是发送字符串,处理报文,获取连接信息和一些连接是否正常的判断
ClientSession extends Session
ClientSession 主要动作是设置用户聊天是设置和使用的策略,获取用户名,获取和设置用户当前状态Presence,当前用户是否为匿名用户
LocalSession implements Session
LocalSession 是一个抽象类,主要扩展了发送和接收数据包数量的统计功能,保存和获取会话一些的数据,获取connection
LocalClientSession extends LocalSession implements ClientSession
LocalClientSession 是LocalSession 实现类
构造方法需要的参数有serverName, connection,streamId
LocalClientSession 增加了AuthToken 属性,即验证类
在session验证以后,设置AuthToken 的处理逻辑如下
设置jid,设置authToken,设置session已经验证过的状态,设置默认聊天策略列表,调用sessionManager.addSession(this)方法
addSession(Session) 方法中从PreAuthenticatedSessions 中删除session, 向路由表中增加session, 发送session创建成功通知
3.routingtable
RoutingTable是一个接口,提供主要方法是jid和session 键值对的增删查, 发送广播消息,获取服务器的名称,获取服务器session个数。判断是否含有session,路由发包。
接口主要对三类session进行操作, clientRoute, componentRoute, serverRoute
routingtable的主要方法如图所示:
实现类 RoutingTableImpl extends BasicModule implements RoutingTable, ClusterEventListener
4.sessionManager
主要实现的功能有 创建、获取、删除 clientSession, componentSession, serverSession, 发送广播消息,加入集群
相关推荐
Openfire源码分析,比较详细的介绍
详细描述openfire 源码在 Eclipse如何部署
openfire源码分析资料,本人参与公司openfire修改,以及二次开发,终于找到了比较全面的openfire资料;吐血推荐,是openfire分析,修改,二次开发不可多得的资料。内附详细源码分析以及二次开发的方法还有数据库表...
openfire源码提供,csdn速率还不错,为此备份一下方便后续下载
openfire源码部署开发 openfire源码部署开发 openfire源码部署开发
Openfire源码部署与开发,即时通消息工具部署
详细介绍了openfire的源码部署流程及开发技术。
openfire源码缺少的bouncycastle.jar包
即时通讯配置文档 OpenFire&Spark&MySQL
openfire源代码研究,介绍Openfire源码目录结构,系统配置等
Android 开发 openfire xmpp 协议 即时通讯
这是openfire spark的源码 来自官方文档,
对openfire的服务端组件开发有好处
openfire4.1.3源码,最近GitHub下载很慢,通过代理完成下载,上传资源共大家分享。受限上传大小分包压缩,第二包免费。
openfire4.1.3源码,最近GitHub下载很慢,通过代理完成下载,上传资源共大家分享。受限上传大小分包压缩,第二包免费。
openfire-4.5.0源码。openfire是一个基于XMPP协议通信聊天的即时通讯框架,欢迎大家下载!!
openfire3.10.0源码编译可能缺少的jar包,具体的源码编译部署细节请看博文http://blog.csdn.net/haunghui6579/article/details/44513481