您的位置:首页 > 编程语言 > Java开发

Instant Messaging java 概要(第二章)01

2007-12-16 12:35 736 查看
开始之前我们对jabber协议有一个总体了解,重点讨论其中的三个核心规则:Message,presence,IQ
1、 Jabber Message模式
在开始编写软件之前我们了解jabber Message模式是非常重要的,他主要由4个方面组成:
Server:Jabber Server参与Jabber的通讯的管理。它的重要职责是为客户端提供服务,服务的内容包括packets的路由选择和用户管理
Client:客户端的典型功能是向终端客户显示信息,响应用户请求。它也提供自主的功能,当作为jabber服务的供应者时,被称为ChatBots
Stream:它的概念是从服务器到客户端的网络连接是一组单向数据流。从xml的角度看他就是一个密闭在<stream:stream>中的xml文档。从逻辑的角度看,Stream结合上下文元数据,包括客户端jabberID,服务器JabberID以及唯一流ID和流状态组成会话。
Packets:客户端到服务器端的xml片段被称为Packets。每一个Packets是自包含的经过验证的xml子文档。Jabber协议规定了这些Packets的格式和交换他们的适当方式。
和其它应用的服务类似,Jabber服务器运行于某一台电脑上并监听来自客户端的请求。Jabber规定Jabber监听端口是5222.安全的Client/server链接能通过SSl,在服务器的5223上连接。Jabber服务能接受其他端口,这些任由管理员设定。
虽然可以选择端口,但是大部分的jabber客户端默认的连接服务器还是通过5222和5223端口,因为客户端的默认配置也是这样,如果改变端口,需要修改客户端配置。
一个Jabber客户端创建一个连接流,向服务器端发送一个<stream:strem>标签。这个未关闭的标签的ID是要连接的服务器域名和发送请求的客户端。这是非常重要的,因为一个服务器上可以有许多Jabber服务。
例如,我用两个jabber域名:shigeoka.com 和manning.com。我能够配置这个DNS将这个域名映射到IP10.0.0.1。一个客户端希望加入到shigeoka.com,通过域名可以找到适当的服务。得到IP地址和要链接的机器。其他客户可能想练接到manning.com同样通过域名可以实现。
Jabber服务的IP地址是10.0.0.1,已知的虚拟了两个域名shigeoka.com和manning.com。不幸得是服务器接收端口5222的连接,他不知道那个域名被客户端所请求。无论如何,当第一个客户端发送一个开放的<stream:stream>标签,它会被指引到mainning.com。服务器能够关联到相关信息以便知到任意哪个一个客户端。
当Jabber服务器接受一个客户连接,他将回复客户端一个<stream:stream>标签,由他发出的标签标识出服务器的域名,同时赋予Stream一个随机的Session ID。当服务被关闭时服务器和客户端都可以发送一个<stream:error>包来说明问题。
一旦服务器和客户端建立了连接,他们根据不同的Jabber协议交换jabber Packets。在大部分的情况下,服务器在被服务器端验证之前仅仅允许客户端使用有限jabber协议的子集。
Jabber没有规定验证的规则。最低限制是,大部分的服务器将允许客户使用Jabber注册和认证协议。
每一个客户端和服务器端可以随时关闭连接,只要发送一个</stream:stream>标签。
为客户端的通讯算法总结如下:
1、 在5222端口连接Jabber服务。
2、 发送一个未闭合的<stream:stream>到指定的服务器地址。
3、 等待服务器的<stream:stream>回复和流会话ID。
4、 用Jabber检验协议登录找到用户资料。
5、 发送Jabber 包到Jabber服务器。Jabber服务路由Packets到适当的接收方。
6、 发送一个关闭的</stream:stream>关闭流。
7、 关闭网络连接。

在这个Message模型中,客户端仅仅需要和服务器有一个连接就可以了。这个连接在发送接收Packets是保持打开了状态。发送Packets时,Packets的客户地址是接收人,发送的到服务器的信息包含在共同的xml中。服务器负责路由Packet到适当最终节点。
这个简单的模型有许多的优点和弱点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: