链接会话模型是本系统的重要对象模型,也是不少其它同类系统的基础,如HTTP应用服务器,它们都是有类似的会话概念来实现表明在线用户。没有链接、会话这模型就不能实现数据包的路由和用户链接的扩展,也就实现不了伸缩性。其中链接主要是用于保存和用户有关的网络链接数据,会话主要是用于保存和用户有关的业务数据,链接、会话之间是有关连的。 服务器
系统对链接、会话进行了抽象,分别实现了非链接管理器的类和链接管理器的类,如下是会话和链接接口的定义。
Session接口定义了:JID、StreamID、会话状态、建立时间、最后活约时间、客户端发送包计数、服务端发送包数、关闭会话、发送包。ClientSession接口继承自Session接口,定义了:活约列表、默认列表、获取用户名、可否洪水发送落线信息、是否匿名、是否在线、冲突计数。
Connection接口定义了:链接的特性,包括客户端的ip,主机名、是否Flash客户端、使用的压缩协议、TLS协议、XMPP版本、注册关闭链接监听、发送数据包。
ioSession、Connection、Session的关系是一个链接对象会引用一个ioSession来实现数据包的发送,链接和会话之间相互引用。这是链接会话模型的顶层抽象,在使用链接管理器和无使用链接管理器下,分别对Connection和Session作了不一样的实现,在非链接管理下能过NIOConnection类实现了Connection,LocalClientSession类实现了Session。在链接管理器下经过VirtualConnection扩展了Connection接口,在经过ClientSessionConnection类实现,经过ConnectionMultiplexerSession扩展了LocalSession,在经过LocalConnectionMultiplexerSession实现。 网络
Author: 红萝卜OO app
Blog: http://my.oschina.net/happydcarrot/ .net