分享一些Comet开发经验

前言

本comet技术主要用于数据库持久层的 穿越防火墙 远程访问。只要有一台中继网站,任意地点的数据库都能被访问。

 

Comet概念介绍

WebIM、网页的客服、meebo等大家听说过了。最近还有个兄弟开源了个网页客服叫,PowerTalk。各位可以搜索一下。

这些最新最炫的技术,用了一个叫comet的架构。

comet对于我来说= http长连接

这个是一个通俗的解释。

老外最擅长就就是发明概念,生怕别人忘了自己的存在。因此把一个很简单的东西搞了一个摸不着边的名词:Comet。

 

Comet思想怎么来

先抛开comet,给个案例分析:

 

局域网(防火墙内)的客户端要与外界联系,如何做到?必然想到了客户端主动发出申请,穿越防火墙 。否则外界无法获得客户端地址(什么xxx映射、路由的就先不谈了)。

 

什么技术能穿越防火墙?必然是Http协议了,因为80号端口是不会封的。(ftp、smtp、pop之类的再闪开,别找我岔)

 

外界的信息如何传递到客户端?必然外界把信息放在一个公共地方(寄存中心),客户端主动链接去取这个信息。这样实现了互通了。

 

但是,客户端什么时候知道外界放了信息呢?传统的思想,就是客户端轮询寄存中心 。可是挑剔的技术人员们怎么能够忍受这种简直是侮辱智商的方案呢?于是,Comet出来了。

 

Comet技术牛逼的地方,在于

1. 当客户端发出了链接申请

2. 寄存中心先把这个申请 存在哈希表

3. 寄存中心寻找有没有属于这个申请 的回复信息(byte[])

4. 如果发现了有对应的回复信息,那么交给申请输出 (response.write(byte[])),然后返回这个申请

5. 如果在一段时间内(60sec)仍然没有人发消息给这个申请 ,那么返回这个申请 ,至于返回什么自己定义吧,比如(response.write("sorry, timeout. please reconnected."))

6. 客户端继续发出一个新的申请 ,回到2了。

 

comet的关键就是在客户端发出的请求被服务器先持久了 。如果用代码说话,可以看:

 

 

 

 

ASP.NET 下的COMET实现

不同的技术,对comet可以有不同的实现,那么在.net下,就要找到最适合的。

CodeProject上有2篇超级棒的入门文章,我建议先玩第二篇的例子,然后看第一篇的思想。

Scalable COMET Combined with ASP.NET

Scalable COMET Combined with ASP.NET - Part 2

第二篇只是实现了一个webim,怎么实现每个人有每个人的想法,不必屈泥与具体的实现方式。我就最简单的介绍一下这个超棒的comet

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值