`
tonynju
  • 浏览: 76004 次
  • 性别: Icon_minigender_1
  • 来自: 浙江嘉善
社区版块
存档分类
最新评论

Comet通讯:Bayeux协议学习

阅读更多
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框架的研究与实现.pdf

    "基于Bayeux协议的Comet框架的研究与实现"这一标题表明了本文的核心内容,主要探讨的是如何运用Bayeux协议来构建一个Comet框架。Bayeux协议是一种专为实时Web应用设计的双向通信协议,而Comet则是一种使服务器能够向...

    ember-comet:Ember Comet 让您可以通过 bayeux 协议轻松地与 Cometd 服务集成

    Ember Comet 让您可以通过 bayeux 协议轻松地与 Cometd 服务集成 入门 通过 bower 安装 ember-comet 或 bower install ember-comet 包含您需要的脚本(建议将包含的所有 Cometd-jquery 脚本编译为一个脚本)示例...

    C#Web即时通讯Comet框架

    **C# Web即时通讯Comet框架详解** 在Web开发中,传统的HTTP协议是基于请求-响应模型的,这种模式在处理实时性需求时显得力不从心,因为服务器只有在接收到客户端的请求后才会返回数据。为了实现Web即时通讯(Web ...

    jquery-Bayeux数据推送

    源码中包含对Bayeux协议的解析、连接管理、事件处理等功能,可以学习到如何利用Ajax技术实现长连接,以及如何设计高效的事件监听和处理。 总结来说,jQuery-Bayeux是实现Web实时通信的强大工具,它简化了Bayeux协议...

    Comet:基于 HTTP 长连接的“服务器推”技术 (实例)

    NULL 博文链接:https://justcoding.iteye.com/blog/1497445

    Comet:基于_HTTP_长连接的“服务器推”技术

    ### Comet:基于_HTTP_长连接的“服务器推”技术 #### 概述 Comet是一种新兴的技术,它允许服务器向客户端推送数据,而非传统的客户端定时请求数据的方式。这种技术特别适用于那些需要实时更新数据的应用场景,...

    彗星::comet:Comets:Swift中的动画粒子

    :comet: 彗星:Swift中的动画粒子 动画制作由作为Voicy设计的一部分 实现Bennet van der Linden 彗星:Swift中的动画粒子 例 // Customize your comet let width = view. bounds . width let height = view. ...

    comet-examples:使用Comet.ml的机器学习代码的示例

    Comet.ml-机器学习实验管理 我们的Misson: Comet在为ML做着GitHub在做代码方面的工作。 我们允许数据科学团队自动跟踪其数据集,代码更改,实验历史和生产模型,从而提高效率,透明度和可重复性。 我们都力争在...

    ApophisAndroid:Never-Die-Zombieroid :comet::woman_vampire:

    ApophisAndroid: Never-Die-Zombieroid :shooting_star: :female_sign:‍:female_sign: SOPT 27日17日APP-JAM:Apophis :shooting_star: :pushpin: 部分会议 每天晚上7:30 :artist_palette: 看板 ...

    3D Comet Plot:具有用户指定尾部长度和线/标记配置的3D Comet Plot-matlab开发

    此外,MATLAB的帮助文档是学习和理解`comet3`函数以及其他相关函数的重要资源。它通常会包含详细的函数说明、输入输出参数解释、示例代码以及常见问题解答。在探索3D彗星图时,建议开发者查阅官方文档以获取最准确和...

    ASP.NET的Comet即时通讯 源码

    总的来说,这个源码提供了一个学习和实践ASP.NET Comet即时通讯的实例,帮助开发者理解如何在ASP.NET环境中实现服务器向客户端的实时数据推送。通过分析和修改这些代码,你可以深入了解Web实时通信的原理,并将其...

    java-comet

    Java-Comet是一种在Java平台上实现的长轮询(Comet)技术,它主要用于实现实时Web通信。Comet技术允许服务器向客户端推送数据,而不仅仅是响应客户端的请求,这在构建实时应用如聊天室、股票报价、在线游戏等场景中...

    Hello-flutter:你好,我的第一个 Flutter :comet:

    :comet: :comet: 入门 该项目是 Flutter 应用程序的起点。 如果这是您的第一个 Flutter 项目,请提供一些帮助您入门的资源: 如需有关 Flutter 入门的帮助,请查看我们的,其中提供了教程、示例、移动开发指南和...

    comet-cache:受简单性启发的高级WordPress:registered:缓存插件

    Comet Cache:trade_mark:Pro是可从获得的商业插件。 该插件托管在公共的Github存储库中,以便更好地促进开发人员和用户的社区贡献。 如果您有建议,错误报告或问题补丁,请随时在此处提交。 但是,我们确实要求,...

    starship::comet::milky_way:任何壳的最小,超快,可自定义的提示!

    Starship 是一个高度可定制且性能出色的命令行提示工具,适用于各种不同的shell环境,包括 Bash、Rust、ZSH、Oh-My-ZSH、PowerShell 和 Fish。它以轻量级和快速为特点,旨在提升用户在终端中的交互体验。...

    comet4j 简单例子+文档

    Comet4j是一个Java框架,专门用于实现Comet技术,这是一种服务器推送技术,允许服务器向客户端实时推送数据,而不仅仅是响应客户端的请求。在Web应用中,这种技术常用于实现聊天、实时通知、股票更新等功能,它克服...

Global site tag (gtag.js) - Google Analytics