Comet技术在IM上的应用

对于数据转发我们一般就两种模式,一种时推模式,一种时拉模式。下面我们简单介绍一下推模式和拉模式。

推模式

该模式下,一般是消息源直接推送给目标群体或推送给Broker,由Broker推送给目标群体。

这个模式下,每一个接收者都有一份数据复制。这种情况下,写入压力非常大,但是读取的压力非常小并且实时性非常高。是一种以空间换时间的模式。

拉模式

该模式下,一般是消息源将数据推送到存储中,目标群体定时或因为某些原因出发拉取动作。

这个模式下,所有接收者共享一份数据复制。这种情况下,写入压力小,但是读取压力偏大,并且实时性偏弱。是一种以时间换空间的模式。

两种模式在系统设计上的影响

推模式,实现上看起来比较简单,但考虑到订阅群体的变化等情况,其实并不是很简答的,并且在存储的消耗上也是很巨大的。

拉模式,实现上触发的随机性很大,并且需要考虑到同步的数据的数量是否会给网络和存储带来巨大的压力。

Comet和两种模式的关系

Comet本质上,是一个http请求服务器而服务器当前没数据,等服务器有数据或超过一定时间才返回给客户端。从这个层面上Comet是一个拉模式和推模式的混合体,为什么这么说?

因为有下面几个原因:

  1. Comet请求连上服务器的瞬间,它所关注的数据已经发生了很多变化,服务器可以立刻返回给客户端。那么这相当于是一个拉模式,客户端和服务器进行了基于检查点的同步。
  2. Comet请求连上服务器时,它所关注的数据还没有发生变化,在该链接没有超时的阶段内,数据发生了变化,服务器将数据返回给客户端。这样就相当等于通过拉取动作去完成了一个推模式。

Comet在IM上的应用

我在前面的博客中介绍了我的IM群组设计。我们可以通过Comet来实现它。下面我就简单讲下如何实现该功能。

  1. 客户端使用POST方法发起一个http请求,其中请求的形式{channel1:sync_key1},{channel2:sync_key2}。
  2. 当服务器接收到这个请求的时候,按要求遍历所有的channel,如果存在数据变化就以{channel1:{sync_key:sync_key1,data:[.....]},{channel2:{sync_key:sync_key2,data:[....]}}这种数据形式返回。
  3. 如果服务器上任何channel都没有变化,就将自己加入所有channel的订阅中。当接收到任何变化的时候,我们就再次遍历所有channel,并按照前面的数据返回数据。
  4. 当客户端收到数据返回的时候,将数据展示,同时用新的sync_key发起http请求,关注数据变化。
时间: 2024-08-30 14:42:25

Comet技术在IM上的应用的相关文章

Comet技术详解:基于HTTP长连接的Web端实时通信技术

前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events). 关于这4种技术方式的优缺点,请参考<Web端即时通讯技术盘点:短轮询.Comet.Websocket.SSE>.本文将专门讲解Comet技术.(本文同步发布于:http://www.52im.net/thread-334-1-1.html) 学习交流 - 即时通

基于 Asp.Net的 Comet 技术解析

Comet技术原理 来自维基百科:Comet是一种用于web的技术,能使服务器能实时地将更新的信息传送到客户端,而无须客户端发出请求,目前有两种实现方式,长轮询和iframe流. 简单的说是一种基于现有Http协议基础上的长轮询技术,之所有会产生这种技术的主要原因是Http协议是无状态的所以客户端和服务端之间没办法建立起一套长时间的连接.比如我们要做一个聊天室,在Web环境下我们通常不能从服务端推送消息到浏览器里,而只能通过每个客户端不断的轮询服务器,以获取最新的消息,这样一来效率非常低,而且不

在 PHP 中结合 Ajax 技术进行图片上传

前面几则日志中讲述了在 PHP 中上传文件,相信大家对 PHP 中如何进行文件上传已经初步掌握.本文来继续探讨在 PHP 中上传文件的技术,不同的是,本次上传将仅限于图片文件的上传,并且将采用 Ajax 技术. 本例将要实现这样的效果:当用户选择图片,开始上传后,后台上传完成时,随即会显示到当前页面.由于,从开始上传到上传完成,再到图片显示均在一个页面上 完成(从表面上看).所以使用 Ajax 技术是必须的.但如何使用这些操作在一个页面上来完成呢?考虑到这样的情况,当文件开始上传后,便开始打开

利用HTML5技术在Web上实现对图形图像的处理——WebPhotoshop精简版

WebPhotoshop精简版是利用HTML5技术在Web上实现对图形图像的处理,构建易维护.易共享.易于拓展.实时性的Web图形图像处理平台. 精简版功能包括:图形绘制.图像处理.图像操作.完整版包括多人协作操作图像.实时交流.图片搜索,同时实现实时的多人协作处理图形图像技术.(完整版后续上传)一.功能说明:1.图形绘制 实现铅笔.画笔(书法画笔.喷枪.蜡笔.记号笔.水彩画笔)的绘制效果.实现直线.曲线.椭圆(圆).矩形(圆角矩形).三角形(直角三角形.等边三角形.任意三角形).多边形的绘制.

差分时钟、DQS与DQM - DDRx的关键技术介绍(上)

作者:一博科技 在上一篇的问题里面问到了DDRX相对于前一代来说的关键技术突破在哪里,虽然没有人回答得完全正确,但这个也是很正常的,因为通过几句话要想说清楚也确实是不容易的,所以还是通过文章来把这些关键技术再给大家介绍一下. 差分时钟技术 差分时钟是DDR的一个重要且必要的设计,但大家对CK#(CKN)的作用认识很少,很多人理解为第二个触发时钟,其实它的真实作用是起到触发时钟校准的作用. 由于数据是在CK的上下沿触发,造成传输周期缩短了一半,因此必须要保证传输周期的稳定以确保数据的正确传输,这就

WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现

原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过

WPF技术触屏上的应用系列(六): 视觉冲击、超炫系统主界面、系统入口效果实现

原文:WPF技术触屏上的应用系列(六): 视觉冲击.超炫系统主界面.系统入口效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过努力奋斗最终还是搞定了.当

WPF技术触屏上的应用系列(五): 图片列表异步加载、手指进行缩小、放大、拖动 、惯性滑入滑出等效果

原文:WPF技术触屏上的应用系列(五): 图片列表异步加载.手指进行缩小.放大.拖动 .惯性滑入滑出等效果 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过努力

WPF技术触屏上的应用系列(三): 视频播放器的使用及视频播放、播放、暂停、可拖动播放进度效果实现

原文:WPF技术触屏上的应用系列(三): 视频播放器的使用及视频播放.播放.暂停.可拖动播放进度效果实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过努力奋