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) :在订阅和取消订阅时的通道名称
分享到:
相关推荐
"基于Bayeux协议的Comet框架的研究与实现"这一标题表明了本文的核心内容,主要探讨的是如何运用Bayeux协议来构建一个Comet框架。Bayeux协议是一种专为实时Web应用设计的双向通信协议,而Comet则是一种使服务器能够向...
Ember Comet 让您可以通过 bayeux 协议轻松地与 Cometd 服务集成 入门 通过 bower 安装 ember-comet 或 bower install ember-comet 包含您需要的脚本(建议将包含的所有 Cometd-jquery 脚本编译为一个脚本)示例...
**C# Web即时通讯Comet框架详解** 在Web开发中,传统的HTTP协议是基于请求-响应模型的,这种模式在处理实时性需求时显得力不从心,因为服务器只有在接收到客户端的请求后才会返回数据。为了实现Web即时通讯(Web ...
源码中包含对Bayeux协议的解析、连接管理、事件处理等功能,可以学习到如何利用Ajax技术实现长连接,以及如何设计高效的事件监听和处理。 总结来说,jQuery-Bayeux是实现Web实时通信的强大工具,它简化了Bayeux协议...
Comet:基于 HTTP 长连接的“服务器推”技术
NULL 博文链接:https://justcoding.iteye.com/blog/1497445
### Comet:基于_HTTP_长连接的“服务器推”技术 #### 概述 Comet是一种新兴的技术,它允许服务器向客户端推送数据,而非传统的客户端定时请求数据的方式。这种技术特别适用于那些需要实时更新数据的应用场景,...
:comet: 彗星:Swift中的动画粒子 动画制作由作为Voicy设计的一部分 实现Bennet van der Linden 彗星:Swift中的动画粒子 例 // Customize your comet let width = view. bounds . width let height = view. ...
Comet.ml-机器学习实验管理 我们的Misson: Comet在为ML做着GitHub在做代码方面的工作。 我们允许数据科学团队自动跟踪其数据集,代码更改,实验历史和生产模型,从而提高效率,透明度和可重复性。 我们都力争在...
ApophisAndroid: Never-Die-Zombieroid :shooting_star: :female_sign::female_sign: SOPT 27日17日APP-JAM:Apophis :shooting_star: :pushpin: 部分会议 每天晚上7:30 :artist_palette: 看板 ...
此外,MATLAB的帮助文档是学习和理解`comet3`函数以及其他相关函数的重要资源。它通常会包含详细的函数说明、输入输出参数解释、示例代码以及常见问题解答。在探索3D彗星图时,建议开发者查阅官方文档以获取最准确和...
总的来说,这个源码提供了一个学习和实践ASP.NET Comet即时通讯的实例,帮助开发者理解如何在ASP.NET环境中实现服务器向客户端的实时数据推送。通过分析和修改这些代码,你可以深入了解Web实时通信的原理,并将其...
Java-Comet是一种在Java平台上实现的长轮询(Comet)技术,它主要用于实现实时Web通信。Comet技术允许服务器向客户端推送数据,而不仅仅是响应客户端的请求,这在构建实时应用如聊天室、股票报价、在线游戏等场景中...
:comet: :comet: 入门 该项目是 Flutter 应用程序的起点。 如果这是您的第一个 Flutter 项目,请提供一些帮助您入门的资源: 如需有关 Flutter 入门的帮助,请查看我们的,其中提供了教程、示例、移动开发指南和...
Comet Cache:trade_mark:Pro是可从获得的商业插件。 该插件托管在公共的Github存储库中,以便更好地促进开发人员和用户的社区贡献。 如果您有建议,错误报告或问题补丁,请随时在此处提交。 但是,我们确实要求,...
Starship 是一个高度可定制且性能出色的命令行提示工具,适用于各种不同的shell环境,包括 Bash、Rust、ZSH、Oh-My-ZSH、PowerShell 和 Fish。它以轻量级和快速为特点,旨在提升用户在终端中的交互体验。...
Comet4j是一个Java框架,专门用于实现Comet技术,这是一种服务器推送技术,允许服务器向客户端实时推送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术常用于实现聊天、实时通知、股票更新等功能,它克服...