基于http的同步方法和装置的制作方法

文档序号:7741078阅读:88来源:国知局
专利名称:基于http的同步方法和装置的制作方法
技术领域
本发明涉及网络技术领域,尤其涉及一种基于HTTP的同步方法和装置。
背景技术
传统的流媒体(Streaming)服务采用实时传输协议和实时流控协议,这种流媒 体服务需要专门的流服务器,而且存在穿越防火墙的障碍;而HTTP (Hypertext Transfer Protocol,超文本传输协议)传输不存在上述的问题,由于web的广泛应用,大量的基础设 施,包括web)服务器,内容分发网络(CDN),都可以支持HTTP传输,采用HTTP的流媒体正在 得到了越来越多的应用。在传统的流媒体直播服务中,客户端以特殊定义的时间“现在”(now)作为时间基 准指示服务器播放的起始时间,服务器把从指定时间开始的内容不断地发送到客户端,客 户端只需要简单地接收和播放服务器发送的媒体流,客户端不需要关心本地时间和服务器 时间是否一致。在基于HTTP的流媒体(HTTP Streaming)直播服务中,服务器是被动的,只能根据 客户端的请求把指定的内容片断发送给客户端。为了实现直播,客户端不断地向服务器请 求媒体片断,直接或者间接地以时间指示所请求的媒体片断,这些的请求是以服务器的时 间来解释的。另外,在HTTP Streaming中也不能使用传统流媒体服务中的所定义“现在”, 因为“现在”是一个非特定的时间,需要服务器的“智能”来解释该时间,HTTP Streaming所 采用的简单的文件服务器不具有“智能”。因此客户端必须和服务器建立时间同步关系,在 请求中使用服务器的时间而不是本地的时间,否则服务器不能正确解释客户端的请求,无 法实现直播服务。为解决上述同步问题,现有技术中有一种办法是采用动态更新的媒体数据索引, 即在服务器维护一个媒体片断索引,记录每个媒体片断的时间区间或者序号,及存储位置。 随着媒体片段的产生,服务器即时地更新这个索引。客户端可以从该索引中获取最近的媒 体分片的信息。在这个方案中,时间同步是隐含的,持续的过程。客户端请求索引文件的实 质就是建立同步的过程,媒体片断索引更新一次,客户端就可以获得一个媒体片断。在实现本发明创造的过程中,发明人发现在直播中,媒体片段是实时生成的,客 户端为了获取最新的媒体片断,必须首先从服务器请求媒体片断索引,获得最新的媒体片 断的信息,然后才能够向服务器请求该媒体片断。对媒体片断索引的频繁更新和读取增加 了服务器的负荷,而且服务器的负荷随着用户的增加进一步加重;其次,媒体片段索引的请 求和传送也消耗了带宽,增加了媒体播放时延。可见,现有技术的方案并没有很好地解决客 户端和服务器的同步问题。

发明内容
本发明实施例提供一种基于HTTP的同步方法和装置,充分利用现有HTTP协议中 的机制,无需增加客户端和服务器之间额外通信开销即可有效解决客户端时间和服务器时间的同步问题。本发明实施例提供一种基于HTTP的同步方法,包括获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应;根据第一响应中的Date字段的取值和Age字段的取值确定以服务器时间表示的 第一响应发送时间;根据与第一响应相关联事件的客户端时间,确定以客户端时间表示的第一响应发 送时间;根据以服务器时间表示的第一响应发送时间和以客户端时间表示的第一响应发 送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和服务器时间 的同步关系。本发明实施例还提供一种基于HTTP的同步装置,包括收发模块用于获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应;第一确定模块用于根据收发模块获得的第一响应中的Date字段的取值和Age字 段的取值确定以服务器时间表示的第一响应发送时间;第二确定模块用于根据与第一响应相关联事件的客户端时间,确定以客户端时 间表示的第一响应发送时间;同步模块用于根据第一时 间确定模块确定的以服务器时间表示的第一响应发送 时间和第二时间确定模块确定的以客户端时间表示的第一响应发送时间,确定服务器时间 和客户端时间的时间偏移量,从而建立客户端时间和服务器时间的同步关系。本发明实施例提供的技术方案,采用根据第一响应中的Date字段的取值和Age字 段的取值确定以服务器时间表示的第一响应发送时间,根据以服务器时间表示的第一响应 发送时间和以客户端时间表示的第一响应发送时间,确定服务器时间和客户端时间的时间 偏移量,从而建立客户端时间和服务器时间的同步关系的技术手段,充分利用了现有HTTP 协议中的机制,无需增加客户端和服务器之间额外通信开销,从而有效解决了客户端时间 和服务器时间的同步问题。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其 他的附图。图1为本发明基于HTTP的同步方法一个实施例的流程图;图2为本发明基于HTTP的同步方法另一个实施例的流程图;图3为本发明实施例的基于HTTP的同步方法应用环境示意图;图4为本发明实施例的基于HTTP的同步方法另一个应用环境示意图;图5为本发明实施例的基于HTTP的同步方法在HTTP流媒体中实现示意图;图6为本发明HTTP流媒体的同步方法一个实施例的流程图;图7为本发明HTTP流媒体的同步方法另一个实施例的流程图;图8为本发明基于HTTP的同步装置一个实施例的结构示意图9为本发明基于HTTP的同步装置另一个实施例的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。本发明实施例提供的技术方案,可以应用于基于HTTP进行时间同步的场合,并不 限于应用于HTTP Streaming中支持直播服务。在HTTP协议中,源服务器和网络中各级缓 存都有可靠的时钟作为同步源,可以认为它们有同一参考时间,该参考时间可以称为服务 器时间。没有可靠的时钟的缓存不允许存储HTTP的响应。对于运行客户端的客户端设备 不需要满足这一条件,如手机,计算机等有本地的时钟,可以称为客户端时间,其通常的使 用不要求同步于外部的时钟。当需要同步服务器时间和客户端时间时,可以采用本发明实 施例提供的技术方案。图1为本发明基于HTTP的同步方法一个实施例的流程图,如图1所示,本发明实 施例包括S100、获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应;S102、根据第一响应中的Date字段的取值和Age字段的取值确定以服务器时间表 示的第一响应发送时间;S104、根据与第一响应相关联事件的客户端时间,确定以客户端时间表示的第一 响应发送时间;S106、根据以服务器时间表示的第一响应发送时间和以客户端时间表示的第一响 应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和服务器 时间的同步关系。本发明实施例提供的方法,采用根据第一响应中的Date字段的取值和Age字段的 取值确定以服务器时间表示的第一响应发送时间,根据以服务器时间表示的第一响应发送 时间和以客户端时间表示的第一响应发送时间,确定服务器时间和客户端时间的时间偏移 量,从而建立客户端时间和服务器时间的同步关系的技术手段,充分利用了现有HTTP协议 中的机制,无需增加客户端和服务器之间额外通信开销,从而有效解决了客户端时间和服 务器时间的同步问题。图2为本发明基于HTTP的同步方法另一个实施例的流程图,如图2所示,本发明 实施例包括S200、获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应。客户端发出获取文件的HTTP请求,请求获得位于源服务器的某一文件。本发明实 施例中,获取文件的HTTP请求可以为一个GET请求,请求获得的文件类型不做限定,本步骤 的目的在于获得一个针对于该请求的HTTP响应,从而提取响应中的相应字段(header),如 可以为HTTP Streaming中的元数据文件和媒体描述文件,考勤系统中的用户数据库文件 等。所以,对于HTTPStreaming,获取文件的HTTP请求包括获取元数据文件或媒体描述文件 的HTTP请求。
在HTTP请求中,可以以URL(Uniform Resource Locator,统一资源定位符)指示 所请求的位于源服务器的文件。如果从客户端到源服务器的路径上有缓存(cache),其中存 储了客户端所请求的文件的有效复本,那么该请求不会被传递到服务器,由该缓存对请求 做出响应并返回给客户端。如图3所示,若客户端T2到源服务器S的路径上的缓存C存储 有T2所请求的文件,则可以由C对T2的请求做出响应。本发明实施例中缓存可以为设备 或程序。某些实施方式中,如果客户端希望避免响应取自路径上的缓存,而是来自源 服务器,那么客户端的请求中可以包含有关缓存的指令,如=Pragma :ηο cache或者 Cache-Control :no cache。两者都要求从源服务器获得响应,差别在于Pragma :no cache 能够为支持HTTP/1. 0的设备所识别,Cache-Control :no cache只能为支持HTTP/1. 1或 者以上版本的设备所识别。当客户端不能确定到源服务器的路径上所有的设备都支持 HTTP/1. 1,那么客户端可以使用Pragma mocache请求来自源服务器的响应。客户端获得源服务器或缓存发送的对获取文件的HTTP请求的响应。本发明实施 例中,由于涉及到客户端和服务器端的两次交互过程,为了描述清楚,可以将客户端在本步 骤中获得的HTTP响应称为第一响应。客户端接收第一响应,该第一响应携带所请求的文 件。该第一响应可以来自于源服务器或者取自客户端到源服务器的路径上的缓存,本发明 实施例中可以将发送第一响应的源服务器或缓存称为第一响应的发送方。客户端可以记录发出请求和接收响应的客户端时间。某些实施方式中,客户端 也 可以只记录接收发出请求的客户端时间或接收响应的客户端时间。S202、客户端确定所述第一响应中是否含有有效的Age字段的取值,若含有则执 行S204,若不含有则执行S210。本发明实施例中,该步骤是一个可选步骤,如果第一响应中必定含有有效的Age 字段的取值,或者实际应用中不考虑是否含有有效的Age字段的取值,则本步骤可以省略。 某些实施方式中,客户端可以确定所述第一响应中是否含有有效的Age字段的取值,从而 决定后续操作。本发明实施例中,用于确定以服务器时间表示的第一响应的生成时间时会用到两 个HTTP字段(HTTP header) =Date字段和Age字段,现进行简单说明在客户端接收的HTTP响应中含有Date字段,该字段一般是由源服务器产生的,表 示该响应的生成(generation)的时间。形象地说,Date字段表示响应的“出生”时间。缓 存不改变存储的响应的Data字段。如果响应是由缓存返回的,响应中的Date字段表示的 时间是响应发送给客户端之前的时间,因为该响应在缓存中已经存在了一段时间。在客户端接收的HTTP响应中可能还含有Age字段。响应中含有该字段,说明该响 应不是直接来自于源服务器而是来自于缓存。该字段是响应的发送者对响应的“年龄”的 估计,即从该响应在源服务器生成以来存在的时间长度,相当于该响应在所经过的缓存中 停留的时间之和加上传输所用的时间。关于响应中是否含有有效的Age字段的取值,可能存在如下几种情况如果响应 是由源服务器做出的,则响应中不含有Age字段,此时可以令Age的值为0,认为响应中含有 有效的Age字段的取值;如果响应是由缓存做出的,则需要根据缓存支持的协议确定响应 中是否含有有效的Age字段的取值,比如,如果缓存支持HTTP/1. 1或以上版本,则可以含有有效的Age字段的取值;如果缓存只支持低于HTTP/1. 1的版本,则由于协议不支持Age字 段,则响应中不含有有效的Age字段的取值。下面参考图4的例子说明如下如果在客户端到源服务器的路径上存在两级缓存Cl和C2,Cl只支持HTTP/1. 0, C2支持HTTP/1. 1,如果所请求的文件在Cl上有复本,从Cl得到并返回的响应中不含有Age 字段,所以不会含有有效的Age字段的取值。如果在客户端到源服务器的路径上存在两级 缓存C3和C4,C3支持HTTP/1. 1,C4只支持HTTP/1. 0,C4中保存的响应可能是之前从C3 得到的,其中含有Age字段,但是当客户端直接从C4得到响应时,虽然其中含有Age字段, 但是Age字段没有被更新,不能反映存储的响应在C4中停留的时间,所以Age字段的取值 不是有效的。在本发明中从响应的协议版本来判断该字段的有效性。此处所举的两个例子 只是说明了 HTTP响应虽然含有Age字段,却不一定有效的情况。这里并没有包含所有的情 况。
所以当第一响应来自于缓存,则可以通过区分做出第一响应的缓存的HTTP协议 版本来确定第一响应中是否含有有效的Age字段的取值,举例来说,如果是HTTP/1. 1或以 上版本,则第一响应中含有有效的Age字段;如果协议版本低于HTTP/1. 1,则该第一响应中 可能不含有Age字段或含有无效的Age字段。也就是说,如果协议版本不低于HTTP/1. 1,则 无论第一响应来自于源服务器或者缓存,都含有有效的Age字段的取值,即若第一响应来 自源服务器,Age字段的取值为0,某些实施方式中也可以设定为其他值,比如考虑传输、时 延等影响,设定为一个不为0的值,所以第一响应来自源服务器,Age字段的取值可以设定 为某一特定值,这个特定值可以根据经验等确定,为叙述方便,后续以取值为0为例进行说 明,但不作为本发明实施例的限制。若第一响应来自于缓存,Age字段的取值为第一响应生 成以来存在的时间;否则,若协议版本低于1. 1,第一响应来自缓存,则第一响应中不含有 有效的Age字段的取值。本发明实施例中,客户端和源服务器默认采用HTTP/1. 1或者以上 版本,而对于网络中的缓存没有这一限制。可见,在做出第一响应的发送方支持的HTTP版本为HTTP/1. 1或HTTP/1. 1以上版 本时,第一响应中含有的Age字段的取值才是有效的。从而,客户端可以判断第一响应的 HTTP协议版本,如果第一响应的发送方支持的HTTP协议版本为HTTP/1. 1或以上版本,则 确定第一响应中含有有效的Age字段的取值;如果第一响应的发送方支持的协议版本低于 HTTP/1. 1,则确定第一响应中不含有有效的Age字段的取值。如前所述,确定第一响应的发送方是否支持HTTP/1. 1或HTTP/1. 1以上版本是 一个可选的步骤,如果从客户端到源服务器的路径上的所有的缓存和源服务器都支持 HTTP/1. 1及其以上版本,或是否支持在实际应用中可以不考虑,则本步骤可以省略。客户端可以通过第一响应的状态行确定协议版本,HTTP的响应形式如下HTTP-Version SP Status-Code SP Reason-Phrase CRLF氺((general-header|response-header|entity-header)CRLF)CRLF[message-body]详细的解释涉及HTTP协议的表达形式,可参考IETF RFC2616,此处从略。综上,若要利用Age字段的取值进行后续操作,则客户端首先需要确定其收到的 第一响应中含有有效的Age字段的取值,即确定第一响应的发送方是否支持。若确定第一响应中含有有 效的Age字段的取值,则执行S204 ;若确定第一响应中不含有有效的Age字 段的取值,则执行S210。需要说明的是,上述关于具体版本号的举例只是作为本发明的一个实施例,不构 成对本发明的限制。实际应用中,不排除通过其他的协议进行区分,或者在版本演进中也可
能存在不以HTTP/1. 1版本作为分界,而已HTTP/1. 2、HTTP/1. 3......HTTP/1, χ作为分界,
比如要求做出第一响应的发送方支持的HTTP版本为ΗΤΤΡ/1. 3或ΗΤΤΡ/1. 3以上版本时,第 一响应中含有的Age字段的取值才是有效的,所以我们可以说确定第一响应中是否含有有 效的Age字段的取值包括确定所述第一响应的发送方是否支持某一 HTTP协议版本,即确 定所述第一响应中含有有效的Age字段的取值包括确定所述第一响应的发送方支持某一 HTTP协议版本。另外一些实施方式中,也可以通过其他的方法来确定第一响应中是否含有 有效的Age字段的取值,比如根据HTTP协议中的Via字段(HTTP header),判断响应的路 径,并确定Age字段的有效性。所以,其他确定第一响应中是否含有有效的Age字段的取值 的方法也在本发明实施例的保护范围之内。为叙述简便,本发明实施例中以HTTP/1. 1或以 上版本,及低于HTTP/1. 1的版本为例进行说明。S204、客户端根据第一响应中的Date字段的取值和Age字段的取值确定以服务器 时间表示的第一响应发送时间。为使方案更加清楚,现结合图5,以HTTP streaming应用为例进行下述介绍,图中 Δ t表示服务器时间、和客户端时间t’ ^的实际时间偏移,td表示根据本发明实施例方法 确定的时间偏移。由于第一响应中都会含有Date字段,若客户端接收的第一响应中含有有效的Age 字段的取值,则可以根据这两个字段的取值,确定以服务器时间表示的该第一响应发送的 时间,可以采用如下的计算方法tn = tdate+tage其中tdate是Date字段的取值,以适合运算的形式表示;tage是Age字段的取值, 以适合运算的形式表示;在第一响应的发送方支持HTTP/1. 1或者更高版本的情况下,消息 中含有Age字段表明该消息不是来自于源服务器,而是来自于缓存。当HTTP第一响应中不 含有Age字段,表明该该消息来自于源服务器,则tage的取值为0。tn是以服务器时间表示 的第一响应发送时间。上述方法只是根据第一响应中的Date字段的取值和Age字段的取值确定以服务 器时间表示的第一响应发送时间的一个举例,在此基础上可以有多种变形,比如考虑到实 际传输、时延等影响,设定一个权值或修正值等。S206、客户端根据与第一响应相关联事件的客户端时间,确定以客户端时间表示 的第一响应发送时间。本发明实施例中,客户端发送请求和接收第一响应可以统称为与第一响应相关联 事件,客户端可以记录与第一响应相关联事件的时间,这个时间是以客户端时间表示的,所 以可称为与第一响应相关联事件的客户端时间。对于与第一响应相关联事件的客户端时间 的记录,客户端可以有多种选择,可以记录发送请求和接收第一响应的时间,也可以只记录 发送请求的时间,或者只记录接收第一响应的时间。可见,根据与第一响应相关联事件的客 户端时间,确定以客户端时间表示的第一响应发送时间包括,根据发送HTTP请求的客户端时间和/或接收HTTP响应的客户端时间,确定以客户端时间表示的第一响应发送时间。客户端可以根据与第一响应相关联事件的客户端时间,确定以客户端时间表示的 第一响应发送时间,确定方法可以有多种选择,本发明实施例给出几种方法,不作为本发明 实施例的限制。考虑因果关系,源服务器或者缓存发送第一响应的时间一定在客户端发送请求的 时间之后,而在客户端接收第一响应的时间之前,以t’n表示以客户端时间表 示的第一响应发送 时间,则有treq< t' n< tres某些实施方式中,客户端可以根据上述关系对第一响应发送的时间作出估计,一 种估计的方法是算术平均t,n= (treq+tres)/2一般情况下,客户端发送请求和接收第一响应之间的时间很短,如数百毫秒,而 Date和Age表示的时间和时间长度也一般精确到秒,所以在某些实施方式中,也可以忽略 客户端发送请求和接收第一响应之间的时间差,从而以或者作为对t’ 的近似估 计,即t,n= t刚或 t,n= tres另外一些实施方式中,可以进一步考虑请求和第一响应的传输时间,即客户端发 送请求到第一响应的发送方的时间,以及第一响应返回到客户端的时间。比如如果客户端 请求的文件比较小,请求和第一响应传输的时间可能比较接近,第一响应返回的时间接近 于客户端发出请求和收到第一响应的中间;如果请求的文件比较大,第一响应的传输时间 可能比请求的传输时间更长,第一响应返回的时间点更接近于客户端发出请求的时间。S208、客户端根据以服务器时间表示的第一响应发送时间和以客户端时间表示的 第一响应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和 服务器时间的同步关系。在上述步骤中已经得到分别以客户端时间表示的和以服务器时间表示的一个 HTTP第一响应的发送时间,则可以得到服务器时间相对于客户端时间的偏移td = tn_t’ n,其中td表示服务器时间相对于客户端时间的时间偏移量,也可以称 为服务器时间和客户端时间的时间偏移量。这样就可以在客户端和服务器之间建立了时间同步关系,根据服务器和客户端之 间的时钟偏移,可以把客户端时间映射为服务器时间,或者反过来把服务器时间映射为客 户端时间t = t’ +td,其中t’表示客户端时间,t表示服务器时间。某些实施方式中,也可以通过重复上述过程,获得多个HTTP请求/响应对,通过计 算或者选择其中时间差较小的请求/响应以获得更为准确的时间偏移量估计。S210、客户端再次发送获取文件的HTTP请求,所述请求中包含Pragmamo cache 指令。若客户端确定收到的第一响应中不含有有效的Age字段的取值,则由客户端重新 发送一个获取文件的HTTP请求,请求获得位于源服务器的某一文件,此时再次发送的请求 中包含有关缓存的指令,为了使低于HTTP/1. 1版本的缓存能够识别,请求中包含的缓存指令为 Pragma :no cache0通过在请求中包含Pragma :no cache指令,强制响应来自于源服务器,从而避免 因为没有有效的Age字段的取值而影响同步的准确。本发明实施例中,源服务器发送的这 个响应可以称为第二响应。S212、客户端根据源服务器发送的第二响应中的Date字段的取值和Age字段的取 值确定以服务器时间表示的第二响应发送时间。本发明实施例中,客户端发送包含Pragma :no cache指令的请求后,收到源服务 器的第二响应。由于第二响应来自于源服务器,如前所述,Age字段的取值为0,从而可以利 用前述S204中描述的方法确定以服务器时间表示的第二响应发送时间。S214、客户端根据与第二响应相关联事件的客户端时间,确定以客户端时间表示 的第二响应发送时间。S216、客户端根据以服务器时间表示的第二响应发送时间和以客户端时间表示的 第二响应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和 服务器时间的同步关系。

S212至S216的具体实现方法,可以参考S204至S208进的描述执行,在此不再赘 述。差别在于第一响应和第二响应的不同,可以统一表述为响应,从而对于某些实施方式, 根据响应中的Date字段的取值和Age字段的取值确定以服务器时间表示的响应发送时间 可以为tn = tdate+tage ;其中tdate是Date字段的值,tage是Age字段的值,tn是以服务器时 间表示的响应发送时间。若响应来自于源服务器,则tage = 0。根据与响应相关联事件的客 户端时间,确定以客户端时间表示的响应发送时间可以为根据发送HTTP请求的客户端时 间和/或接收HTTP响应的客户端时间,确定以客户端时间表示的响应发送时间。本发明实施例提供的技术方案,采用根据第一响应中的Date字段的取值和Age字 段的取值确定以服务器时间表示的第一响应发送时间,根据以服务器时间表示的第一响应 发送时间和以客户端时间表示的第一响应发送时间,确定服务器时间和客户端时间的时间 偏移量,从而建立客户端时间和服务器时间的同步关系的技术手段,充分利用了现有HTTP 协议中的机制,不需要对现有机制做扩展,不在客户端和服务器之间增加额外的通信开销, 从而不会消耗带宽,不会增加业务处理的时延。而且能够有效的利用缓存,减轻了服务器的 负荷。综上,本发明实施例提供的技术方案有效解决了客户端时间和服务器时间的同步问 题。另一方面,本发明实施例提供的技术方案充分考虑了不同的HTTP协议版本对Age字段 的支持,从而根据不同的情况采用不同的时间同步的处理流程,扩大了方法的适用范围,保 证了在某些情况下,如果缓存不含有有效的Age字段的取值情况下的同步的准确性。下面结合应用环境进一步说明本发明实施例提供的基于HTTP的同步方法,以下 结合HTTP streaming和考勤系统的应用环境进行说明,但显然本发明技术方案的应用并不 局限于上述应用。在HTTP Streaming服务中,媒体内容按照时间顺序被分割为一系列媒体片断,客 户端请求含有这些媒体片断的文件,按照顺序播放媒体片段。HTTPstreaming服务的一般过 程如下S300、客户端首先通过媒体描述文件(Media presentation description file) 获得关于媒体内容访问的基本信息,如服务的类型是直播或者点播,媒体片断的时间长度等;媒体内容的属性媒体分量,编码速率等;如何访问这些内容等。S302、客户端获取元数据文件。元数据文件包含一个特殊的媒体片断,它描述媒体数据的特性,而不包含任何的 媒体样本序列。客户端根据获取的元数据文件正确地配置播放器,处理后续的媒体片段。 客户端获取元数据文件和获取其他的媒体片断文件的方法是一致的,都是通过 HTTP协议完成的。客户端根据媒体描述文件生成元数据文件的统一资源定位符URL,发出 HTTP请求,源服务器或者路径中的缓存通过HTTP响应返回该文件。S304、客户端请求下载媒体片断并顺序播放媒体片段。在该步骤之前,客户端需要 完成与服务器之间的时间同步。如果客户端根据在S300获得的媒体描述文件判断服务的类型是直播,则可以在 S302应用本发明实施例提出的基于HTTP的同步方法,建立客户端时间和服务器时间之间 的同步。尽管只有直播服务需要在客户端和服务器之间建立同步,同步并不影响非直播 (点播)服务,而获取元数据文件是HTTP Streaming的必要步骤,所以可以不需要知道服务 的类型而在S302中总是执行同步建立。媒体描述文件可以通过不同的方式传递到客户端,如短信,HTTP等方式。如果客 户端是通过HTTP方式获得媒体描述文件的,那么同样可以应用本发明的方法在S300时即 实现客户端时间和服务器时间的同步。图6为本发明HTTP流媒体的同步方法一个实施例的流程图,如图6所示,本发明 实施例包括S600、获得源服务器或缓存发送的对获取元数据文件的HTTP请求的第一响应;S602、根据第一响应中的Date字段的取值和Age字段的取值确定以服务器时间表 示的第一响应发送时间;S604、根据与第一响应相关联事件的客户端时间,确定以客户端时间表示的第一 响应发送时间;S606、根据以服务器时间表示的第一响应发送时间和以客户端时间表示的第一响 应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和服务器 时间的同步关系。本发明实施例提供的技术方案,采用根据第一响应中的Date字段的取值和Age字 段的取值确定以服务器时间表示的第一响应发送时间,根据以服务器时间表示的第一响应 发送时间和以客户端时间表示的第一响应发送时间,确定服务器时间和客户端时间的时间 偏移量,从而建立客户端时间和服务器时间的同步关系的技术手段,充分利用了现有HTTP 协议中的机制,无需增加客户端和服务器之间额外通信开销,从而有效解决了客户端时间 和服务器时间的同步问题。图7为本发明HTTP流媒体的同步方法另一个实施例的流程图,如图7所示,本发 明实施例包括S700、客户端发送获取元数据文件的HTTP请求。某些实施方式中,也可以是发送 获取媒体描述文件的请求。某些实施方式中,请求中可以包括Pragmamo cache指令或者 Cache-Control :no cache指令,从而指定由源服务器做出响应。
S702、客户端接收源服务器或缓存发送的携带所述元数据文件的第一响应。S704、客户端确定所述第一响应中是否含有有效的Age字段的取值,若含有则执 行S706,若不含有则执行S712。如前所述,该步骤为一个可选步骤。S706、客户端根据 第一响应中的Date字段的取值和Age字段的取值确定以服务器 时间表示的第一响应发送时间。S708、客户端根据与第一响应相关联事件的客户端时间,确定以客户端时间表示 的第一响应发送时间。S710、客户端根据以服务器时间表示的第一响应发送时间和以客户端时间表示的 第一响应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和 服务器时间的同步关系。S712、客户端再次发送获取元数据文件的HTTP请求,所述请求中包含Pragma :no cache指令。S714、客户端根据源服务器发送的第二响应中的Date字段的取值和Age字段的取 值确定以服务器时间表示的第二响应发送时间。S716、客户端根据与第二响应相关联事件的客户端时间,确定以客户端时间表示 的第二响应发送时间。S718、客户端根据以服务器时间表示的第二响应发送时间和以客户端时间表示的 第二响应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和 服务器时间的同步关系。由于前述实施例已对基于HTTP的同步方法进行了比较详尽的说明,在此对于 HTTP流媒体的同步方法的上述步骤不再具体展开说明,请参考图2所示的实施例。本发明基于HTTP的同步方法也可以应用在考勤系统中,简单说明如下一个考勤 系统,也就是一个时间记录系统,包括源服务器和若干分布在不同地方的客户端组成,这里 的客户端可以为考勤终端。源服务器和客户端之间通过互联网或者其他的IP网络连接在 一起,两者之间的路径上可能存在缓存。源服务器和缓存的时间是一致的,为客户端提供统 一的时间基准,保证所有客户端的时间的一致性。另外源服务器保存用户的数据库,收集各 个客户端的时间记录。客户端通过一个读卡器,读入用户的数据,记录用户操作的时间。当客户端开始工作时,首先通过HTTP协议请求源服务器上的用户数据库文件,当 所请求的数据库文件位于缓存中时,则可以由缓存做出响应。在获得用户数据库文件的过 程中,建立起服务器时间和客户端时间之间的同步。一旦完成同步,客户端就可以独立工 作,显示统一的服务器的时间,记录用户操作的时间,在约定的时间把记录的数据传送到服 务器。对于具体的时间同步方法,可以参考前述实施例的描述,在此不再赘述。图8为本发明基于HTTP的同步装置一个实施例的结构示意图,如图8所示,本发 明实施例包括收发模块800 用于获得源服务器或缓存发送的对获取文件的HTTP请求的第一响 应;第一确定模块802 用于根据收发模块800获得的第一响应中的Date字段的取值 和Age字段的取值确定以服务器时间表示的第一响应发送时间;
第二确定模块804:用于根据与第一响应相关联事件的客户端时间,确定以客户 端时间表示的第一响应发送时间;同步模块806 用于根据第一时间确定模块确定的以服务器时间表示的第一响应 发送时间和第二时间确定模块确定的以客户端时间表示的第一响应发送时间,确定服务器 时间和客户端时间的时间偏移量,从而建立客户端时间和服务器时间的同步关系。
本发明实施例提供的装置,采用根据第一响应中的Date字段的取值和Age字段的 取值确定以服务器时间表示的第一响应发送时间,根据以服务器时间表示的第一响应发送 时间和以客户端时间表示的第一响应发送时间,确定服务器时间和客户端时间的时间偏移 量,从而建立客户端时间和服务器时间的同步关系的技术手段,充分利用了现有HTTP协议 中的机制,无需增加客户端和服务器之间额外通信开销,从而有效解决了客户端时间和服 务器时间的同步问题。某些实施方式中,如图9所示,所述基于HTTP的同步装置还可以包括判断模块 801,用于确定所述第一响应中是否含有有效的Age字段的取值。所述判断模块801可以通 过确定所述第一响应的发送方是否支持某一 HTTP协议版本来确定所述第一响应中含有有 效的Age字段的取值。若判断模块801确定所述第一响应中不含有有效的Age字段的取值,则所述收发模块800 还用于再次发送获取文件的HTTP请求,所述请求中包含 Pragma :no cache 指令;所述第一确定模块802 还用于根据所述收发模块800获得的源服务器发送的第 二响应中的Date字段的取值和Age字段的取值确定以服务器时间表示的第二响应发送时 间;所述第二确定模块804:还用于根据与第二响应相关联事件的客户端时间,确定 以客户端时间表示的第二响应发送时间;所述同步模块806:根据所述第一确定模块802确定的以服务器时间表示的第二 响应发送时间和所述第二确定模块804确定的以客户端时间表示的第二响应发送时间,确 定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和服务器时间的同步关系。某些实施方式中,所述收发模块800发送的获取文件的HTTP请求中可以包括 Pragma :no cache指令或者Cache-Control :no cache指令,从而获得的第一响应来自于源 服务器。某些实施方式中,所述第一确定模块802根据响应中的Date字段的取值和Age字 段的取值确定以服务器时间表示的响应发送时间可以采用如下方法tn = tdate+tage ;其中tdate是Date字段的值,tage是Age字段的值,tn是以服务器时 间表示的响应发送时间。若响应来自于源服务器,则tage = 0。某些实施方式中,所述第二确定模块804根据与响应相关联事件的客户端时间, 确定以客户端时间表示的响应发送时间时,可以根据收发模块800发送HTTP请求的客户端 时间和/或接收HTTP响应的客户端时间,确定以客户端时间表示的响应发送时间。在HTTP Streaming的应用环境中,所述收发模块800发送的获取文件的HTTP请求可以为获取元数据文件的HTTP请求或获取媒体描述文件的HTTP请求。下面结合图2所示的方法实施例,结合流程对本发明基于HTTP的同步装置进一步 说明如下收发模块800第一确定模块802第二确定模块804同步模块806判断模块801收 发模块800获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应。判断模块801 确定所述第一响应中是否含有有效的Age字段的取值。若确定第一响应中含有有效的Age字段的取值,则由第一确定模块802根据第一 响应中的Date字段的取值和Age字段的取值确定以服务器时间表示的第一响应发送时间。第二确定模块804根据与第一响应相关联事件的客户端时间,确定以客户端时间 表示的第一响应发送时间。同步模块806根据以服务器时间表示的第一响应发送时间和以客户端时间表示 的第一响应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间 和服务器时间的同步关系。如前所述,判断模块801确定第一响应中含有有效的Age字段的取值的步骤是一 个可选步骤。某些实施方式中,若判断模块801确定第一响应中不含有有效的Age字段 收发模块800再次发送获取文件的HTTP请求,所述请求中包含Pragma :no cache 指令。第一确定模块802根据源服务器发送的第二响应中的Date字段的取值和Age字 段的取值确定以服务器时间表示的第二响应发送时间。第二确定模块804根据与第二响应相关联事件的客户端时间,确定以客户端时间 表示的第二响应发送时间。同步模块806根据以服务器时间表示的第二响应发送时间和以客户端时间表示 的第二响应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间 和服务器时间的同步关系。由于前述方法实施例已对基于HTTP的同步方法进行了比较详细的说明,上述实 施例中的基于HTTP的同步装置用于实现前述基于HTTP的同步方法,所以对基于HTTP的同 步装置执行方法时的具体细节只进行简单说明,在此不再赘述,可以参考前述方法实施例 的内容。本发明实施例提供的基于HTTP的同步装置可存在于多种终端设备中,包括手机、 计算机、考勤机等。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通 过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质 中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁 碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。以上所述仅是本发明的具体实施方式
,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
权利要求
1.一种基于HTTP的同步方法,其特征在于,所述方法包括 获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应;根据第一响应中的Date字段的取值和Age字段的取值确定以服务器时间表示的第一 响应发送时间;根据与第一响应相关联事件的客户端时间,确定以客户端时间表示的第一响应发送时间;根据以服务器时间表示的第一响应发送时间和以客户端时间表示的第一响应发送时 间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和服务器时间的同 步关系。
2.根据权利要求1所述的方法,其特征在于,获得源服务器或缓存发送的对获取文件 的HTTP请求的第一响应后,所述方法还包括确定所述第一响应中含有有效的Age字段的取值。
3.根据权利要求2所述的方法,其特征在于,确定所述第一响应中含有有效的Age字段 的取值包括确定所述第一响应的发送方支持某一 HTTP协议版本。
4.根据权利要求1所述的方法,其特征在于,获得源服务器或缓存发送的对获取文件 的HTTP请求的第一响应后,所述方法还包括确定所述第一响应中不含有有效的Age字段的取值; 再次发送获取文件的HTTP请求,所述请求中包含Pragma :no cache指令; 根据源服务器发送的第二响应中的Date字段的取值和Age字段的取值确定以服务器 时间表示的第二响应发送时间;根据与第二响应相关联事件的客户端时间,确定以客户端时间表示的第二响应发送时间;根据以服务器时间表示的第二响应发送时间和以客户端时间表示的第二响应发送时 间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和服务器时间的同 步关系。
5.根据权利要求1所述的方法,其特征在于所述获取文件的HTTP请求中包含Pragma :no cache指令或者Cache-Control :no cache指令;获得的第一响应来自于源服务器。
6.根据权利要求1至5任一项所述的方法,其特征在于,根据响应中的Date字段的取 值和Age字段的取值确定以服务器时间表示的响应发送时间包括tn — tdate+tage ;其中tdate是Date字段的值,tage是Age字段的值,tn是以服务器时间表示的响应发送 时间。
7.根据权利要求6所述的方法,其特征在于 若响应来自于源服务器,则= O。
8.根据权利要求1至5任一项所述的方法,其特征在于,所述根据与响应相关联事件的 客户端时间,确定以客户端时间表示的响应发送时间包括根据发送HTTP请求的客户端时间和/或接收HTTP响应的客户端时间,确定以客户端 时间表示的响应发送时间。
9.根据权利要求1至5任一项所述的方法,其特征在于,所述获取文件的HTTP请求包括获取元数据文件或媒体描述文件的HTTP请求。
10.一种基于HTTP的同步装置,其特征在于,所述装置包括收发模块用于获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应;第一确定模块用于根据收发模块获得的第一响应中的Date字段的取值和Age字段的 取值确定以服务器时间表示的第一响应发送时间;第二确定模块用于根据与第一响应相关联事件的客户端时间,确定以客户端时间表 示的第一响应发送时间;同步模块用于根据第一时间确定模块确定的以服务器时间表示的第一响应发送时间 和第二时间确定模块确定的以客户端时间表示的第一响应发送时间,确定服务器时间和客 户端时间的时间偏移量,从而建立客户端时间和服务器时间的同步关系。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括判断模块用于确定所述第一响应中是否含有有效的Age字段的取值。
12.根据权利要求11所述的装置,若判断模块确定所述第一响应中不含有有效的Age 字段的取值,其特征在于所述收发模块还用于再次发送获取文件的HTTP请求,所述请求中包含Pragma :no cache指令;所述第一确定模块还用于根据所述收发模块获得的源服务器发送的第二响应中的 Date字段的取值和Age字段的取值确定以服务器时间表示的第二响应发送时间;所述第二确定模块还用于根据与第二响应相关联事件的客户端时间,确定以客户端 时间表示的第二响应发送时间;所述同步模块根据所述第一确定模块确定的以服务器时间表示的第二响应发送时间 和所述第二确定模块确定的以客户端时间表示的第二响应发送时间,确定服务器时间和客 户端时间的时间偏移量,从而建立客户端时间和服务器时间的同步关系。
全文摘要
本发明实施例公开了一种基于HTTP的同步方法和装置。其中方法包括获得源服务器或缓存发送的对获取文件的HTTP请求的第一响应;根据第一响应中的Date字段的取值和Age字段的取值确定以服务器时间表示的第一响应发送时间;根据与第一响应相关联事件的客户端时间,确定以客户端时间表示的第一响应发送时间;根据以服务器时间表示的第一响应发送时间和以客户端时间表示的第一响应发送时间,确定服务器时间和客户端时间的时间偏移量,从而建立客户端时间和服务器时间的同步关系。通过上述技术手段,有效解决了客户端时间和服务器时间的同步问题。
文档编号H04L29/08GK102137130SQ201010103230
公开日2011年7月27日 申请日期2010年1月22日 优先权日2010年1月22日
发明者张少波 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1