您的位置:首页 > Web前端 > JavaScript

Comet通讯:Bayeux协议学习

2009-06-16 14:57 176 查看

Comet通讯:Bayeux协议学习

工作学习Nov 18th, 2008Lendy
http://cometdproject.dojotoolkit.org/
Bayeux Protocol — Bayeux 1.0draft1

Bayeux协议:
1.基本概念
目的:使用ajax实现客户端和服务器的双向交互。
术语:
消息(message):客户端和服务器使用JSON对象进行消息传递
通道(channel):命名通道是事件(event)的目的地或是来源。事件被发布到通道中,同时订阅者接受通道中的数据
事件(event)  :Bayeux协议中传递的实际应用中的数据
传递的方式:
Long-pool和streaming两种方式,
使用两个连接:
为了能够实现双向的交互,一个Bayeux客户端使用两个http去连接服务器。这样可以使服务器到客户端与客服端到服务器的消息传递同时进行。
连接协定:使用handshake进行连接协定是否连接成功

BC —————————————– BS
| —————— handshake request —> |
| <—- handshake response —————- |
| ——————– connect request —> |
~                                           ~ wait
| <—— connect response —————- |

2.协议定义
2.1通道(channel)
2.1.1定义:
channel_name     = “/”  channel_segments
channel_segments = channel_segment *( “/” channel_segment )
channel_segment  = token
2.1.2通配通道
channel_pattern  = *( “/” channel_segment ) “/” wild_card
wild_card = “*” | “**”
2.1.3特殊通道:
Meta 通道(/meta/):Bayeux协议自身的协议,本地的客户端可以订阅该通道,远程的客户端不能订阅。
Service 通道(/service/):用于请求和回应连接模型的通道,普通的客户端和服务器的ajax请求,不记录订阅信息。只把回复消息发给请求的客户端,可以用于传输隐私数据。
2.2 版本(Version):使用Bayexu的版本
2.3 客户端标识(Client ID):随机的,不可预测的至少128bits的数字字母串,clientId   =   alphanum *( alphanum )
2.4 消息簇(Messages): 使用JSON数组封装消息,每个消息只能包含一个通道,一个消息簇可以有多条消息.

3 消息(Message)字段定义
3.1 所有字段:channel, version, minimumVersion, supportedConnectionTypes, clientId, advice, connectionType, id, timestamp, data, successful, subscription, error, ext
3.2 重要字段说明:
3.2.1 通道(channel)
用于连接和订阅的通道:”/meta/handshake”, “/meta/connect”, “/meta/subscribe”,”/meta/unsubscribe”, “/meta/disconnect”
3.2.2 支持的连接类型(supportedConnectionTypes)
long-polling(使用post,content-type:application/x-www-form-urlencoded)
callback-polling(使用get实现)
ifram
flash
3.2.3 连接类型(connectionType): 一次连接中的具体连接类型
3.2.4 数据(data):传递的数据
3.2.5 订阅(subscription) :在订阅和取消订阅时的通道名称
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息