Comet通讯:Bayeux协议学习
2009-06-16 14:57
176 查看
Comet通讯:Bayeux协议学习
工作学习Nov 18th, 2008Lendyhttp://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) :在订阅和取消订阅时的通道名称
相关文章推荐
- Comet通讯:Bayeux协议(ajax实现客户端和服务器的双向交互)
- RFID学习(六)通讯协议概述
- hadoop学习之通讯协议
- CAN 学习笔记一_【基于STM32的CANopen通讯协议的实现】
- 通讯协议的理解学习
- 学习笔记-HTTP通讯协议
- TCP/IP协议学习(七) 基于C# Socket的Web服务器---动态通讯实现
- 在J2ME中实现基于UDP协议通讯程序
- 手机通讯模块开发协议文档索引
- Websocket协议的学习、调研和实现
- EtherCAT 实时以太网络通讯协议
- LoadRunner中winsocket协议学习
- android学习之使用AIDL实现进程间的通讯
- linux学习杂记之虚拟机和物理机的通讯
- HTTP协议的学习
- SPI总线 SPI接口 SPI协议 SPI模式 SPI通讯
- 解释通讯协议中的xml
- Swift学习:2.21 协议
- silverlight之wcf双工通讯学习笔记
- Beetle在TCP通讯中使用协议分析器和自定义协议对象