第一坊雅欣 thunder:CometD 2 java 概念

来源:百度文库 编辑:偶看新闻 时间:2024/05/04 07:07:00

原文地址:

              http://cometd.org/documentation/2.x/cometd-java/concepts

 

CometD 2 Java 概念

 

由 sbordet 提交于星期日,2010/10/10-20:50。

 

CometD 2 Java 概念

 

CometD 项目实现的是comet技术,这技术使用的是 Bayeux 协议提供可扩展的基于 HTTP 的消息系统。

 

一般情况下,消息系统由服务器部分的客户端部分组成,它们通过协议进行通信。这捕获模式称为半对象加(half object plus)协议。如图:

 

  

 

Sessions

 

Org.cometd.bayeux.client.ClientSession是客户端部分的半对象,它表示与 Bayeux 服务器通信的一个Session。

 

当一个客户端半对象session被客户端创建时,他们最初没有分配给记录者的org.cometd.bayeux.server.ServerSession半对象。

只有当客户端的session服务器与握手时,他的服务器session记录被创建,且两个半对象之间的连接被创建。

 

客户端session的概念对于远程客户端来说是易懂的,但是它也存在于服务端部分。

 

Bayeux 服务端只能识别服务端session半对象,且只有一种方法去创建服务端session半对象,就是首先创建它的记录客户端,然后用它去与服务端握手。

 

出于这个原因,在服务端部分,就有了org.cometd.bayeux.server.LocalSession这个额外的概念,它扩展于org.cometd.bayeux.client.ClientSession。它是一个发生在服务端的客户端session,且从此本地化到服务端。

 

例如服务端服务被分配给一个本地的session,在创建服务端服务之后,这个本地的session握手的同时创建记录的服务端session半对象。所以bayeux 服务端可以通过org.cometd.bayeux.server.ServerSession用同一种方法处理远程session和本地session 。

 

在CometD实现中,两端的通信用的是bayeux消息交换数据。

 

消息

 

在客户端Java API提供org.cometd.bayeux.Message接口去和只读内容的消息进行交互。

 

用户可以编写代码改变一个消息的内容,用的是把

内部子接口org.cometd.bayeux.Message.Mutable作为参数传递给回调函数(例如:扩展客户端)。

 

在服务端的子接口org.cometd.bayeux.server.ServerMessage允许和只读消息交互,并把内部子接口org.cometd.bayeux.server.ServerMessage.Mutable作为参数传递给回调函数,在这个函数中用户可以编写代码改变一个消息的内容(例如:扩展服务端)。

 

消息被发布到频道中去。

 

 

频道

 

一个频道被定义成一个主题,这个主题是关于发布到这个频道的消息和喜欢把接收到的消息发布到这个频道的订阅者的。

 

频道可以写成类似于目录路径或通配符,例如:

 

/chat/room/1,/stocks/**, /cinema/trailers/*.

 

Bayeux频道被分为三种类别:

 

 

 

?元数据频道(以/meta/开头且被bayeux协议保留)

?服务频道(以/services/开头并被用于客户端到服务端的通信)

?普通频道(以任何字符串开头并被用于客户端之间广播消息)

 

在服务端,子接口org.cometd.bayeux.server.ServerChannel允许与频道交互(例如:用于发布消息或增加侦听器)

 

在客户端,被通过org.cometd.bayeux.client.ClientSessionChannel提供的客户端session限制.