导航

转载: POLL和PUSH

Posted on 2013-12-04 20:45  littledrop  阅读(656)  评论(0编辑  收藏  举报

 

 (2010-04-15 07:43:20)

poll方式
    Poll方式,也称为轮循,是大家都比较熟悉的一种数据同步方式,客户端定期去ping查询服务器,确定是否有需要的数据。例如,软件更新模块,客户端软件需要定期去查询官方网站,判断当前是否有更新的版本,如果有就提醒用户进行升级。邮件客户端,需要定期查询邮件服务器,查询是否有新的邮件。RSS阅读器,也是需要不断的查询rss地址的状态,如果有更新,就将数据拿回来。
    当服务器没有数据的时候,poll方式会浪费大量的带宽。为了降低带宽,通常是采用减低poll的频率来实现的,这就导致了消息的长延迟,实时性不高。像gmail的POP3邮件检查间隔从10分钟到1小时不等。

push方式
    Poll在于很多情况下通信信道是单向的。为了解决poll的问题,可以将通信信道设计为双向的,这样就可以服务器采用push的方式主动向客户端进行数据同步了。双向通信信道设计,考虑到要穿透NAT和防火墙,很多实现采用长连接。例如各种IM的实现:MSN是TCP的长连接,QQ是UDP模仿的长连接,GTALK是HTTP模仿的长链接。
    Push方式就是服务器主动向客户端推送数据。当前实现push方式有两种方法:
1. 客户端首先连接到服务器,并维持长连接
2. 服务器能够直接访问到客户端,不需要长连接
在国内NAT和firewall遍地都是的情况下,第2种方法不是很可行,但是对于一些企业应用,这种方法还是不错的和可行的。
    For a PUSH service to work, we need to have a connection already negotiated in order to have a way to address the client. Without a persistently open connection, a private IP address of the client is not mapped to the server.

    目前流行的Push方式有三种:

    1、短信触发

  2G时代长时间的数据连接会影响电话接入的可靠性,所以Pushmail用短信的方式触发。推过来一个你看不到的短信,让系统去连接邮件服务器。

    2、长连接心跳查询

  3G时代,语音和数据分离,手机长时间的保持网络连接成为可能。于是可以建立一个连接,设定一定时间间隔,让手机不断的检查服务器的邮件。

    3、长连接IMAP IDLE

  网络进步的同时,邮件推送的协议也在不断改进。IMAP开始支持IDLE特性。让手机不需要总去访问服务器。手机的请求过来,邮件服务器可以把回复挂起,有新邮件近来时再发出。