用于网络通信的系统和技术的制作方法

文档序号:11779769阅读:205来源:国知局
用于网络通信的系统和技术的制作方法与工艺

相关申请

本申请要求享有于2015年3月27日提交的、题为“systemsandtechniquesforwebcommunication”的美国专利申请no.14/671,266的优先权。

本公开总体上涉及电子通信的领域,以及更具体地,涉及网络通信。



背景技术:

存在用于管理计算网络中的设备之间的通信的许多常规协议和技术。然而,当在新的设置(例如,低功率网络服务器或对等通信)中应用时,这些技术经常是低效且繁琐的。

附图说明

通过以下具体实施方式,结合附图,将容易理解实施例。为了有助于本说明书,同样的附图标记指定同样的结构元素。在附图的图中,通过示例的方式而非通过限制的方式示出了实施例。

图1是根据各种实施例的被配置用于网络通信的说明性计算系统的框图。

图2是根据各种实施例的可以包括在图1的计算系统的开发者计算设备中的说明性网络通信组件的框图。

图3是根据各种实施例的表示网页的说明性数据集,其包括平台特征标签。

图4示出了根据各种实施例的可以用于存储平台和平台特征支持数据的示例数据结构。

图5示出了根据各种实施例的表示图3的网页的数据集,其生成以用于由特定网络服务器平台提供。

图6示出了根据各种实施例的表示图3的网页的数据集,其生成以用于由与图5的网络服务器平台不同的特定网络服务器平台提供。

图7示出了根据各种实施例的包括针对相应平台的表示图3的网页的多个数据集的头文件。

图8描绘了根据各种实施例的生成头文件的工具的说明性图形用户接口,该头文件包含针对相应平台的表示网页的一个或多个数据集。

图9是根据各种实施例的可以包括在图1的计算系统的网络服务器中的说明性网络通信组件的框图。

图10是根据各种实施例的可以由图1的计算系统的开发者计算设备执行的用于网络通信的说明性过程的流程图。

图11是根据各种实施例的可以由图1的计算系统的网络服务器执行的用于网络通信的说明性过程的流程图。

图12是根据各种实施例的可以包括在图1的计算系统的中继服务器中的说明性网络通信组件的框图。

图13是根据各种实施例的可以包括在图1的计算系统的计算设备中的说明性网络通信组件的框图。

图14是根据各种实施例的可以包括在图1的计算系统的网络服务器中的说明性网络通信组件的框图。

图15和图16是根据各种实施例的用于图1的计算系统的网络服务器、计算设备、以及中继服务器之间的网络通信的说明性过程的信号流程图。

图17示出了根据各种实施例的可以用于存储用于网络通信的源设备、目标设备、以及时延数据的示例数据结构。

图18是根据各种实施例的可以由图1的计算系统的中继服务器执行的用于网络通信的说明性过程的流程图。

图19是根据各种实施例的可以由图1的计算系统的计算设备执行的用于网络通信的说明性过程的流程图。

图20是根据各种实施例的可以由图1的计算系统的网络服务器执行的用于网络通信的说明性过程的流程图。

图21是根据各种实施例的可以包括在图1的计算系统的计算设备中的说明性网络通信组件的框图。

图22是根据各种实施例的可以包括在图1的计算系统的网络服务器中的说明性网络通信组件的框图。

图23是根据各种实施例的用于图1的计算系统的网络服务器、第一计算设备、以及第二计算设备之间的网络通信的说明性过程的信号流程图。

图24是根据各种实施例的可以由图1的计算系统的计算设备执行的用于网络通信的说明性过程的流程图。

图25是根据各种实施例的可以由图1的计算系统的网络服务器执行的用于网络通信的说明性过程的流程图。

图26示出了根据各种实施例的可以包括在图1的计算系统中的多个中继服务器的星形配置。

图27示出了根据各种实施例的可以包括在图1的计算系统中的多个中继服务器的网格配置。

图28示出了根据各种实施例的可以用于存储用于网络通信的加载数据的示例数据结构。

图29示出了根据各种实施例的可以用于存储用于网络通信的中继服务器位置数据的示例数据结构。

图30是根据各种实施例的可以由图1的计算系统的计算设备执行的用于网络通信的说明性过程的流程图。

图31是可以用于实现本文公开的实施例中的任何合适的实施例的说明性计算设备的框图。

具体实施方式

本文公开了涉及用于网络通信的系统和技术的实施例。术语“网络通信”可以指示有助于通过计算网络传输信息的任何技术,并且本文公开的各种实施例可以以不同的方式影响网络通信。例如,在一些实施例中,计算设备可以包括以下逻辑:改变典型地响应于对网页的请求而提供的数据,以改进服务速度并且实现通过低功率设备的服务。在一些实施例中,中继服务器可以包括多路复用以处理不同类型的传入数据的网络端口,以及用于适当地处理这些不同类型的传入数据的逻辑。在一些实施例中,可以以相比常规技术实现对计算资源的改进分配的方式,对不同计算设备之间的通信的时延进行测量和存储。这些实施例仅是说明性的,并且本文公开了许多附加的实施例。

本文公开的实施例中的各种实施例可以涉及网络实时通信(webrtc)。webrtc是实现浏览器到浏览器或浏览器到设备通信的协议。当设备在网络地址转换器(nat)的一层或多层后面或者在一个或多个防火墙后面时,可能无法实现直接传递信号或直接对等webrtc连接。在这种情形下,webrtc协议包括用于中间服务器的交互式连接建立(ice)协议以有助于于通信。一种这样的ice协议是nat会话穿透效用(stun),其为客户端服务器协议,其中stun服务器接收来自客户端的请求,并且作为响应将客户端的公共互联网协议(ip)地址连同关于nat(客户端处于其后面)类型的信息一起发送到该客户端(以使得客户端能够将该信息提供给预期的webrtc合作伙伴)。第二种ice协议是使用中继穿透nat(turn),其为中继协议,其中放置turn中继服务器用于在两个客户端之间中继消息,这两个客户端的对等通信被(例如,防火墙)阻挡。turn服务器可以被视为具有中继能力的stun服务器,并且具有公共地址。一般地,当客户端试图(例如,使用rtc对等点连接(rtcpeerconnection))与另一设备建立直接webrtc连接时,客户端首先尝试使用通用数据报协议(udp)在对等点之间建立直接连接。如果该尝试失败,则客户端尝试传输通信协议(tcp)。如果尝试失败,则客户端可以使用turn服务器。传统地,静态地指定(例如,在rtc对等点连接构造器中)用于stun服务器和turn服务器的地址(例如,统一资源定位符(url)),并且该地址可以包括用于访问服务器的证书和用户名值。如下面详细描述的,本文公开的实施例中的某些实施例可以改进webrtc通信。

在下面的具体实施方式中,参考形成其一部分的附图,在附图中同样的附图标记始终指定同样的部件,并且其中通过示例说明的方式示出了可以实践的实施例。可以理解,在不脱离本公开的范围的情况下,可以使用其它实施例并且可以进行结构或逻辑改变。因此,下面的具体实施方式不应被认为是限制意义的。

可以以对理解所要求保护的主题最有帮助的方式,依次将各种操作描述为多个离散的动作或操作。然而,描述的次序不应被解释为暗示这些操作必须是依赖于次序的。特别地,这些操作可以不按照呈现的次序执行。所描述的操作可以以不同于所描述的实施例的次序来执行。在附加的实施例中,可以执行各种附加的操作和/或省略所描述的操作。

出于本公开的目的,短语“a和/或b”表示(a)、(b)或(a和b)。出于本公开的目的,短语“a、b、和/或c”表示(a)、(b)、(c)、(a和b)、(a和c)、(b和c)、或(a、b、和c)。

本说明书使用短语“在实施例中”或“在各实施例中”,其每个均可以指代相同或不同的实施例中的一个或多个。此外,如关于本公开的实施例所使用的术语“包含”、“包括”、“具有”等是同义的。如本文所使用的,短语“耦合”可以表示两个或更多个元件直接物理或电接触,或者两个或更多个元件彼此不直接接触,但仍然彼此协作或交互(例如,经由一个或多个中间元件,其可以执行它们自己的变换或具有它们自己的效果)。例如,当两个元件与公共元件(例如,存储器设备)通信时,两个元件可以彼此耦合。如本文所使用的,术语“逻辑”可以指代是以下中的一部分或者包括:专用集成电路(asic)、电子电路、处理器(共享的、专用的、或组)、和/或执行一个或多个软件或固件程序的存储器(共享的、专用的、或组)、组合逻辑电路、和/或提供所描述的功能的其它合适的组件。如本文所使用的,如果信号在组件外部或内部生成,则信号可以由该组件“接收”,并且由该组件进行确认和/或处理。

图1是根据本文公开的实施例中的任何实施例的可以被配置用于网络通信的说明性计算系统100的框图。计算系统100可以包括多个计算设备,例如,第一计算设备102、第二计算设备104、stun服务器152、中继服务器108、网络服务器110、以及开发者计算设备106,其彼此通信地耦合。计算系统100的计算设备中的每个计算设备可以包括网络通信组件(在图1中示为分别用于第一计算设备102、第二计算设备104、stun服务器152、中继服务器108、网络服务器110、以及开发者计算设备106的网络通信组件112、114、132、118、120、以及116)。

可以通过通信路径(由箭头指示)来实现计算系统100内的通信。通信路径每个均可以包括通过直接耦合和/或通过个人区域网、局域网、和/或广域网的有线通信路径和/或无线通信路径。计算系统100的计算设备中的每个计算设备可以包括用于支持通信路径的合适的硬件,例如,网络接口卡、调制解调器、wifi设备、设备、长期演进(lte)设备等。在一些实施例中,通信路径可以是如图1所示的组件之间的直接通信路径。虽然在图1中示出了特定的通信路径,但是在计算系统100中可以包括任何合适的通信路径(并且特别地,可以包括附加的通信路径,或者可以省略所示出的通信路径)。例如,在开发者计算设备106与计算系统100的其它计算设备之间没有示出任何通信路径。这仅仅是为了易于说明,并且开发者计算设备106可以与计算系统100的其它计算设备中的任何计算设备进行通信。在一些实施例中,计算系统100可以包括如本文参考开发者计算设备106所讨论地配置的一个或多个开发者计算设备,每个开发者计算设备与计算系统100的其它计算设备中的一个或多个进行通信。

包括在计算系统100中的计算设备中的每个计算设备可以包括处理设备(未示出)和存储设备(在图1中示为分别用于第一计算设备102、第二计算设备104、stun服务器152、中继服务器108、网络服务器110、以及开发者计算设备106的存储设备122、124、142、128、130、以及126)。处理设备可以包括一个或多个处理器件,例如,一个或多个处理核心、asic、电子电路、处理器(共享的、专用的、或组)、组合逻辑电路、和/或可以被配置为处理电子数据的其它合适的组件。存储设备可以包括任何合适的易失性和/或非易失性存储器或大容量存储设备(例如,固态驱动器、软盘、硬盘驱动器、压缩盘只读存储器(cd-rom)等)。包括在计算系统100中的计算设备中的每个计算设备可以包括一条或多条总线(以及总线桥,如果合适),以通信地耦合处理设备、存储设备、以及包括在相应的计算设备中的任何其它设备。

存储设备可以包括一组计算逻辑,其可以包括计算机可读介质(例如,非暂时性计算机可读介质)的一个或多个副本,该计算机可读介质上存储有指令,指令当由计算设备的处理设备执行时可以使得计算设备实现本文公开的技术和方法中的任何技术和方法或其任何部分。

计算系统100的计算设备每个均可以包括可以经由有线通信路径或无线通信路径进行通信的外围设备,例如,照相机、打印机、扫描仪、射频识别(rfid)读取器、信用卡刷卡设备、或任何其它外围设备。除了并入本文的本公开的网络通信教导外,第一计算设备102、第二计算设备104、stun服务器152、中继服务器108、网络服务器110、以及开发者计算设备106可以是本领域已知的宽范围的这种设备。具体地而非限制性地,在下面对示例进行了描述。在一些实施例中,计算逻辑可以包括下面讨论的逻辑的集合中的任何合适的逻辑。

在本文公开的系统的一些实施例中,可以不包括图1所示的计算系统100的组件中的一个或多个组件。例如,在一些实施例中,计算系统100可以不包括stun服务器152。在一些实施例中,计算系统100可以包括任何期望数量的与图1所示的计算设备不同的计算设备。例如,计算系统100可以包括如本文参考中继服务器108所讨论地配置的多个中继服务器,如本文参考网络服务器110所讨论地配置的多个网络服务器,以及如本文参考第一计算设备102和第二计算设备104所讨论地配置的多个计算设备。

本文公开了可以包括在计算系统100的相应计算设备中的网络通信组件112、114、132、118、120、以及116的多个示例。并非所有这些网络通信组件都必须被包括在它们相应的计算设备中,相反根据本公开,在计算系统100中可以包括网络通信组件112、114、132、118、120、以及116的实施例的任何组合,而任何剩余的元件由常规逻辑提供。例如,,开发者计算设备106可以包括根据本文公开的实施例中的任何实施例的网络通信组件116,而计算系统100中的其它计算设备可以以常规方式配置。在另一示例中,根据本文公开的实施例中的任何实施例,中继服务器108、网络服务器110、和第一计算设备102可以分别包括网络通信组件118、120、以及112,而计算系统100中的其它计算设备可以以常规方式配置。

下面参考图2-11讨论的实施例可以改进网络服务器在提供网页时的性能,特别是当这些网络服务器嵌入在低功率设备中时。在合适时,可以对这些实施例中的任何实施例与本文公开的任何其它实施例进行组合。

计算设备提供基于网络的接口作为用户与计算设备进行交互的主要方式(并且因此用作网络服务器)是有用的。常规的网站是考虑到强大的企业网络服务器而设计和构建的,并且这些网站典型地包含超文本标记语言(html)、图像文件、级联样式表(css)、以及javascript文件。然而,当提供设备受成本约束时(例如,当设备可用的存储或处理能力有限时),设备可能难以提供常规网站,并且可能需要浏览器进行许多次循环(round-trip)来完全加载网站。实际上,在一些场景下,接收来自提供设备(例如,诸如移动电话的用户设备)的网站的网络浏览器可以是比提供设备更强大的计算设备。另外,提供设备必须将所有网站组件存储在非易失性存储设备中,这对于低资源设备而言可能是繁冗的或不可能的。在浏览由该设备提供的网站时,这些性能缺陷的结果可能是降级的用户体验(相对于由企业网络服务器提供的完全功能的网站)。

下面参考图2-11讨论的实施例中的各种实施例可以用于将完全特征的网站嵌入到相对少量的存储空间中,并从低功率设备来提供站点。低功率设备的示例可以包括片上系统设备(例如,inteledison设备,其具有在500mhz操作的双核中央处理单元(cpu)和在100mhz操作的微控制器单元(mcu),用于在进一步的cpu分析之前进行低功率预处理)、应用处理器(例如,intelgalileo设备、单核400mhz应用处理器)、可穿戴设备(例如,如上面讨论的)、或机上管理控制器设备(例如,具有专用处理器、存储器、以及网络连接以实现平台的安全远程管理的设备,例如,intel管理引擎)。

另外,下面参考图2-11讨论的实施例中的各种实施例可以用于自动生成针对提供不同特征的不同网络服务器平台的网站表示。这样的实施例表示相比针对不同平台手动构造不同网站的重大技术进步。例如,一些实施例可以取一组网站文件作为输入,根据html规范将所有文件合并成单个文件,运行预处理器以消除目标服务器不支持的特征,对剩余的代码执行“缩小”操作(例如,去除空格并编辑javascript代码),将结果压缩成单个紧凑块(例如,经由gzip),以及将块格式化为c头文件,以使得目标服务器能够将块作为变量进行访问并按照所请求的将其提供出。另外,在一些实施例中,c头文件可以包含定制用于具有不同特征的不同目标服务器的多个块。

图2是根据各种实施例的可以包括在图1的计算系统的开发者计算设备中的网络通信组件200的框图。特别地,在一些实施例中,网络通信组件200可以用作开发者计算设备106的网络通信组件116(并且将出于示例说明的目的在下面如此讨论)。虽然可以分离地示出网络通信组件200的元件(以及本文中的网络通信组件中的任何网络通信组件),但是可以在合适时对元件进行组合或划分,并且每个元件在执行其自己的处理时可以使用由其它元件生成的结果中的一个或多个结果,如下面讨论的。可以通过物理总线、长距离有线通信路径、短距离或长距离无线通信路径、或通信路径的任意组合在网络通信组件200的元件之间(或在本文所讨论的网络通信组件中的任何网络通信组件的元件中的任何元件之间)传达数据。

网络通信组件200可以包括接收逻辑202、移除逻辑204、缩小逻辑206、以及提供逻辑208。接收逻辑202可以被配置为接收表示网页的第一数据集。接收逻辑202可以通过从接收逻辑202本地的、或远离接收逻辑202的存储位置取回第一数据集来接收该第一数据集。例如,第一数据集可以存储在存储设备126中。在一些实施例中,如下面参考图8的图形用户接口800所讨论的,可以将第一数据集在开发者计算设备106的文件结构内的位置提供给接收逻辑202,并且接收逻辑202可以通过在文件结构内定位第一数据集来访问第一数据集。

在一些实施例中,第一数据集可以包括超文本标记语言(html)文件(例如,典型地用作网页的“主”文件的index.html文件)。第一数据集还可以包括一个或多个附加的文件,可以在html文件内对其进行引用以供在所显示的网页中使用,例如,一个或多个图像文件或一个或多个级联样式表(css)文件。因此,在一些实施例中,第一数据集可以包括不同类型的多个文件。

第一数据集可以包括用于在网页中使用的多个元素,其依赖于可以受到将网页提供给请求客户端的特定网络服务器的平台支持的特征或者不受到支持的特征。例如,传统的专用网络服务器可以具有在网页中提供大的、高分辨率的图像文件的能力,而嵌入在低功率设备中的网络服务器可能没有这样的能力(例如,可能不能够在合理的时间量内提供大的、高分辨率的图像文件)。对于没有考虑特定服务器平台而设计的网页(网页设计的传统方法),可能存在不受最终提供网页的网络服务器的平台支持的元素。这些元素可以对应于第一数据集中的部分(例如,html代码的依赖于不受网络服务器支持的特征的部分)。

移除逻辑204可以与接收逻辑202耦合,并且可以被配置为通过从第一数据集中移除一部分来生成第二数据集。由移除逻辑204移除的部分可以是对应于不受将网页提供给客户端的网络服务器的平台支持的平台特征的部分。通过使用表示受到有意向平台支持和/或不受支持的平台特征的所存储的数据来识别有意向平台,以及确定第一数据集的哪些部分对应于对于有意向平台而言不支持的平台特征,移除逻辑204可以识别第一数据集中对应于不支持的平台特征的部分。在一些实施例中,第一数据集可以包括用于标明代码中的对应于可以受到网络服务器支持或不受支持的各种平台特征的各种部分的标签。在一些这样的实施例中,移除逻辑204可以识别第一数据集中的与平台特征相关联的标签,并且基于标签来识别要移除的部分。

例如,图3中示出了根据各种实施例的表示网页的说明性数据集300,其包括平台特征标签。特别地,数据集300包括两个特征标签:第一标签<!--###begin###{smallpicture}-->,<!--###end{smallpicture}-->,以及第二标签<!--###begin###{largepicture}-->,<!--###end{largepicture}-->。如图4所示,第一标签标明了html代码要求包括宽度为640像素且高度为480像素的图像“face_stock_small.jpg”,而第二标签标明了html代码要求包括宽度为1300像素且高度为1217像素的图像“face_stock_large.jpg”。在该示例中,第一标签可以对应于平台特征smallpicture;如果网络服务器平台支持提供小的图片,则移除逻辑204可以不移除由smallpicture标签标明的html代码。第二标签可以对应于平台特征largepicture;如果网络服务器平台支持提供大的图片,则移除逻辑204可以不移除由largepicture标签标明的html代码。然而,如果网络服务器平台不支持smallpicture特征或largepicture特征,则移除逻辑204可以移除html代码的对应部分。可以在其它类型的代码中使用相似的特征标签(例如,在javascript中使用//###begin###{...}和//###end###{...})。

例如,图4中示出了根据各种实施例的可以用于存储平台和平台特征支持数据的示例数据结构400。数据结构400可以用于在存储设备(例如,存储设备126)中组织数据。数据结构400可以包括用于一个或多个条目(例如,图4中所示的条目406-420)的平台字段402和受支持特征字段404。平台字段402可以取这样的值:标识可以提供网页的不同网络服务器的不同平台。受支持特征字段404可以取标识在对应的平台字段402中哪些平台特征受到平台支持的值。图4所示的示例受支持平台特征包括通用输入/输出(gpio)、远程终端能力、文件访问、操作系统(例如,用于arm设备的linux和用于x86设备的linux)、以及上面参考图3讨论的特征smallpicture和largepicture。数据结构400中表示的平台和平台特征可以由开发者定义为适合于要被提供的网页和提供平台。

仍然参考图2,在一些实施例中,移除逻辑204可以接收网络服务器的平台的指示,第一数据集所表示的网页从该网络服务器的平台被提供,并且然后访问平台与受到平台支持的平台特征之间的所存储的关联性(例如,存储在存储设备126中的数据结构400中)来确定哪些平台特征受到平台支持或不受支持。然后,移除逻辑204可以分析第一数据集以识别对应于不受平台支持的平台特征的部分,并且移除这些部分。这些操作的示例说明在图5和图6中示出,并在下面进行讨论。

虽然第一数据集可以包括用于标明对应于不同平台特征的不同部分的标签(例如,如上面参考图3所讨论的),但是不一定是这种情况。在一些实施例中,数据结构400或另一数据结构还可以包括各种平台特征的定义,并且移除逻辑204可以识别受到特定平台支持和/或不受支持的平台特征,并且然后分析第一数据集以确定哪些部分对应于受到支持的特征以及哪些部分对应于不受支持的特征(以便移除对应于不支持特征的部分)。例如,smallpicture特征可以被定义为任何图像具有小于指定大小的文件大小(例如,以千字节测量)和/或小于指定大小的显示大小(例如,以像素尺寸测量)。如果第一数据集包括对应于这样的图像的部分,并且网络服务器平台支持smallpicture特征,则移除逻辑204可以不移除该部分。如果网络服务器平台不支持smallpicture特征,则移除逻辑204可以移除该部分。

网络通信组件200还可以包括缩小逻辑206。缩小逻辑206可以耦合到移除逻辑204,并且可以被配置为通过对第二数据集(由移除逻辑204生成的)执行至少一个缩小操作来生成第三数据集。如本文使用的,“缩小操作”可以指代对表示第一网页的数据集进行的操作,该操作生成表示第二网页的第二数据集,其中第二数据集在大小上要小于第一数据集,但是其中通过网络浏览器的第一网页的显示与第二网页的显示相同。换言之,缩小操作缩减了网页的表示的大小,而不影响网页的显示。

缩小逻辑206可以执行多个缩小操作中的任何缩小操作。例如,缩小逻辑206可以用一个或多个图像文件的内联表示来替换包括在第二数据集中的一个或多个图像文件。html文件中的图像的内联表示可以是包括在html文件本身内的图像的基64(base64)表示(而不是具有图形格式的分离的文件)。

在另一示例中,缩小逻辑206可以从第二数据集中移除代码注释。注释经常包括在html代码中以用于改进人员可读性,但是注释不一定正确地表达html代码,并且因此可以被移除,而不影响对应网页的显示。在另一相关示例中,缩小逻辑206可以从第二数据集中移除空格、换行、以及回车。

在另一示例中,为了更快的性能,缩小逻辑206可以处理javascript代码。在网页中使用javascript的常规的、人员可读的方法涉及在html文件的底部定义代码元素和/或引用一个或多个分离的.js文件。缩小逻辑206可以内联来自分离文件的javascript和这些分离的定义,移除代码注释,移除不必要的空格,以及移除不必要的分号。

在另一示例中,缩小逻辑206可以通过以下操作来处理css数据:识别css块,加载所引用的css文件并对其进行内联(例如,以与上面讨论的对图像数据进行内联类似的方式),移除不必要的空格、回车、以及换行,以及移除代码注释。

图5示出了根据各种实施例的表示图3的网页的数据集500,其生成以用于由不支持上面结合图3和图4讨论的平台特征largepicture的特定网络服务器平台提供。特别地,数据集500可以表示当图3的第一数据集300由接收逻辑202接收、由移除逻辑204处理以移除对应于不受支持特征的部分、并且然后由缩小逻辑206处理以进一步减小大小时的结果。如图5所示,已经从图3的第一数据集300中移除了空格和回车(图5中包括换行符,以使得数据集500能够在图中显示),已经对图像“face_stock_small.jpg”进行内联,并且没有出现对应于largepicture特征的代码。

图6示出了根据各种实施例的表示图3的网页的数据集600,其生成以用于由与图5的网络服务器平台不同且不支持平台特征smallpicture的特定网络服务器平台提供。如上面参考图5所讨论的,数据集600可以表示当图3的第一数据集300由接收逻辑202接收、由移除逻辑204处理以移除对应于不受支持特征的部分、并且然后由缩小逻辑206处理以进一步减小大小时的结果。如图6所示,已经从图3的第一数据集300中移除了空格和回车(图6中包括换行符,以使得数据集600能够在图中显示),已经对图像“face_stock_large.jpg”进行内联,并且没有出现对应于smallpicture特征的代码。

图5和图6的数据集500和600仍然分别具有人员可读的元素。在一些实施例中,缩小逻辑206还可以执行从html到十六进制的编码。在这种实施例中,第三数据集可以是以十六进制形式的(人员不可读,但是网络浏览器可读)。

返回到图2,网络通信组件200可以包括提供逻辑208。提供逻辑208可以耦合到缩小逻辑206,并且可以被配置为将(由缩小逻辑206生成的)第三数据集提供给网络服务器(例如,网络服务器110)。提供逻辑208将第三数据集提供给的网络服务器可以具有这样的平台:其对应于移除逻辑204针对其移除不受支持特征的平台;因此,第三数据集可以向网络服务器提供适于由网络服务器提供给其它计算设备的网页的“定制”表示。在接收到第三数据集时,可以使得网络服务器能够响应于来自计算设备的向网络服务器的针对网页的请求而将第三数据集提供给计算设备(例如,第一计算设备102)。在一些实施例中,提供逻辑208还可以向网络服务器110提供网络服务器代码(例如,可以以可移植c编写的用于小型的单线程网络服务器的代码),并且网络服务器110可以使用该代码将第三数据集提供给请求计算设备(例如,作为静态链接的数据块)。如上面指出的,当由网络服务器110提供时,可以(例如,使用gzip)压缩第三数据集,并且由请求计算设备上的浏览器对第三数据集进行解压缩。

在一些实施例中,表示相同网页但是针对不同平台的不同数据集可以包括在单个文件中。可以将该文件提供给不同的平台,平台中的每一个平台可以识别并使用适合于其自己的平台的数据集。例如,表示相同网页的多个数据集可以包括在单个头文件中。图7示出了根据各种实施例的头文件700,其包括针对相应平台的表示图3的网页的多个数据集。特别地,头文件700包括两个#if定义的声明,其标识两个不同的平台,手机和平板电脑。与这些#if定义的声明中的每一个相关联的是存储网页的十六进制表示的变量(例如,如上面参考缩小逻辑206所讨论的)。与手机相关联的变量可以存储包括受手机网络服务器平台支持的平台特征的表示,并且与平板电脑相关联的变量可以存储包括受平板电脑网络服务器平台支持的平台特征的表示。以这种形式,取决于网络服务器的平台,网页的变量表示可以选择性地包括在c代码中。

在一些实施例中,开发者计算设备106可以为开发者计算设备106的用户提供图形用户接口,以用于定义平台及其相关联的受支持的特征,并且指定表示网页的数据集应当针对其被生成的平台或多个平台。图8描绘了根据各种实施例的生成头文件的工具的说明性图形用户接口800,该头文件包含针对相应平台的表示网页的一个或多个数据集。图形用户接口800允许用户指定包含与待处理的网页相关联的文件的文件夹、存储输出的头文件的名称和位置、输出的变量名称、以及一个或多个目标平台和针对每个平台的相关联的受支持的特征。一旦用户指定了期望的特性,用户就可以点击“生成”按钮,以使得工具合并网站文件,根据针对所选择的(多个)目标平台的受支持的特征对文件进行预处理,通过缩小对文件进行优化,压缩文件(例如,经由gzip),以及将网站嵌入到头文件中以供稍后与c代码一起使用。

接收包括针对不同平台的网页的多个表示的文件的网络服务器可以被配置为针对其自己的平台识别适当的表示,并且响应于针对网页的请求而提供该表示。图9是根据各种实施例的可以包括在计算系统100的网络服务器中的网络通信组件900的框图。特别地,在一些实施例中,网络通信组件900可以用作网络服务器110的网络通信组件120(并且将出于示例说明的目的在下面如此讨论)。

网络通信组件900可以包括接收逻辑902、选择逻辑904、识别逻辑906、以及提供逻辑908。接收逻辑902可以被配置为从计算设备(例如,第一计算设备102)接收针对网页(例如,html网页)的请求。

选择逻辑904可以被配置为从存储在网络服务器110的存储设备130中的多个标识符中选择网络服务器110的平台的这样的标识符。例如,不同平台的标识符可以采取图4针对平台字段402中的值所示的形式。在一些实施例中,标识符可以采取头文件中的#if定义语句的不同变元的形式,如上面参考图7所讨论的。例如,网络服务器110可以具有识别两个平台手机和平板电脑的头文件,并且选择逻辑904可以选择两个平台中的哪个作为网络服务器110的平台。

识别逻辑906可以耦合到接收逻辑902,并且可以被配置为至少部分地基于由选择逻辑904选择的网络服务器的平台的标识符来识别表示所请求的网页的压缩数据集。换言之,在由选择逻辑904选择网络服务器110的平台的标识符时,识别逻辑906可以识别表示所请求的网页的对应压缩数据集。如本文所使用的,“压缩”数据集可以指示经历标准压缩操作(例如,gzip)的数据集。因此,在一些实施例中,压缩数据集可以是gzip数据块或gzip文件。在一些实施例中,识别逻辑906可以通过将变量从头文件加载到存储器中来识别压缩数据集,如上面参考图7所讨论的。

提供逻辑908可以耦合到识别逻辑906,并且可以被配置为响应于针对网页的请求而提供由识别逻辑906识别出的压缩数据集。对网页进行请求的计算设备的网络浏览器可以被配置为对压缩数据集进行解压缩以显示所请求的网页。例如,对压缩数据集进行解压缩可以产生html文件,该html文件然后能够由网络浏览器显示。

在一些实施例中,对压缩数据集进行解压缩可以产生由网络通信组件200的提供逻辑208提供给网络服务器110的第三数据集,如上面参考图2-6所讨论的。因此,例如,在一些实施例中,当对压缩数据集进行解压缩时,压缩数据集可以包括图像的内联表示,或者可以是不具有回车的html文件。在一些实施例中,对压缩数据集进行解压缩可以不一定产生网页的人员可读的表示。例如,在一些实施例中,压缩数据集可以是html文件的十六进制编码。

在一些实施例中,在由识别逻辑906识别以及由提供逻辑908提供之前,压缩数据集可以存储在网络服务器110的随机存取存储器(ram)中。这样的实施例与企业规模的网络服务器操作形成对比,在企业规模的网络服务器操作中网页文件(例如,html和图像文件)由于其大小而存储在硬盘上。即使当企业网络服务器利用ram高速缓存时,这种高速缓存的目的和设计也是为了容纳接收数据的浏览器。在本文公开的实施例的各种实施例中,压缩数据集的ram存储的目的和设计是为了容纳服务器(例如,以使得其必须完成较少的cpu和i/o密集型任务,并且因此能够以较少的资源来提供内容)。

通过将网页的压缩表示存储在ram中,与可能利用网页的常规表示的常规网络服务器相比,网络服务器110能够更快速地取回和提供压缩表示。

图10是根据各种实施例的可以由计算系统100的开发者计算设备执行的用于网络通信的说明性过程1000的流程图。在本文中将过程1000讨论为由与网络服务器110通信的开发者计算设备106执行,但是过程1000可以由任何合适的计算设备执行,或者与任何合适的计算设备一起执行。为了示例说明起见,尽管方法1000(以及本文描述的其它方法)的操作被描绘为以特定的序列执行,但是方法1000(以及本文描述的其它方法)的操作可以在适当时并行执行或者以任何其它次序执行。可以根据本文所描述的计算系统100的实施例中的任一项来执行方法1000(以及本文描述的其它方法)的操作中的任何操作。

在1002处,开发者计算设备106(例如,接收逻辑202)可以接收表示网页的第一数据集,其中第一数据集包括与不受用于提供网页的网络服务器(例如,网络服务器110)的平台支持的平台特征相关联的部分。

在1004处,开发者计算设备106(例如,移除逻辑204)可以通过从第一数据集中移除该部分来生成第二数据集。

在1006处,开发者计算设备106(例如,缩小逻辑206)可以通过对第二数据集(在1004处生成的)执行至少一个缩小操作以便减小第二数据集的大小来生成第三数据集。

在1008处,开发者计算设备106(例如,提供逻辑208)可以将第三数据集提供给网络服务器(例如,网络服务器110)。网络服务器可以被配置为响应于来自计算设备的向网络服务器的针对网页的请求而将第三数据集提供给计算设备。然后过程1000可以结束。

图11是根据各种实施例的可以由计算系统100的网络服务器执行的用于网络通信的说明性过程1100的流程图。在本文中将过程1100讨论为由与第一计算设备102通信的网络服务器110执行,但是过程1100可以由任何合适的计算设备执行,或者与任何合适的计算设备一起执行。

在1102处,网络服务器110可以将对应的多个平台的多个标识符存储在存储设备(例如,存储设备126)中。在一些实施例中,多个标识符的存储可以包括头文件的存储。

在1104处,网络服务器110(例如,接收逻辑902)可以从计算设备(例如,第一计算设备102)接收针对html网页的请求。

在1106处,网络服务器110(例如,选择逻辑904)可以从所存储的多个标识符(在1102处存储的)中选择网络服务器110的平台的标识符。

在1108处,网络服务器110(例如,识别逻辑906)可以识别表示网页的压缩数据集,其中识别至少部分地基于网络服务器的平台的标识符(在1106处选择的)。

在1110处,网络服务器110(例如,提供逻辑908)可以响应于请求而将压缩数据集(在1108处识别出的)提供给计算设备。计算设备的网络浏览器可以被配置为对压缩数据集进行解压缩以显示网页。然后过程1100可以结束。

下面参考图12-20讨论的实施例可以有助于在webrtc环境中选择turn服务器以改进性能。在合适时,这些实施例中的任一个可以与本文公开的任何其它实施例组合。

如上面指出的,当udp业务不能在端点之间直接路由时,可以使用turn服务器作为中继。中继将附外的复杂性和延迟引入到通信路径中(特别是当使用tcp控制信道时),但是将turn服务器定位到端点中的一个端点附近(并且使用快速的turn服务器)可以减轻这种负担。典型地,对用于特定网络应用的turn服务器的选择静态地编码在网络应用中,并且可以不是在使用时最佳可用的turn服务器。

通过测量中继服务器(例如,turn服务器)与webrtc系统中的浏览器之间的通信链路的时延,并且存储该信息以供在选择中继服务器以有助于webrtc连接时使用,下面参考图12-20详细讨论的各种实施例可以改进常规的技术。在一些实施例中,turn服务器可以包括多路复用的http/turn能力,以允许网络应用向turn服务器发送异步javascript和可扩展标记语言(ajax)查询。网络应用可以响应于ajax查询而向网络服务器报告表示turn服务器的时延的数据。还可以将时延数据报告给turn服务器(例如,经由发送ajax查询的计算设备的浏览器)。由浏览器、网络服务器、以及turn服务器累积的时延数据可以用于动态地改进webrtc中的turn配置。

图12是根据各种实施例的可以包括在计算系统100的中继服务器中的说明性网络通信组件1200的框图。特别地,在一些实施例中,网络通信组件1200可以用作中继服务器108的网络通信组件118(并且将出于示例说明的目的在下面如此讨论)。

网络通信组件1200可以包括确定逻辑1202、turn数据处理逻辑1204、以及http数据处理逻辑1206。确定逻辑1202可以耦合到中继服务器108的网络端口,并且可以被配置为确定从(例如,第一计算设备102的)网络浏览器传入到网络端口的数据是turn数据还是http数据。这种“多路复用的”网络端口在本文中可以被称为turn/http网络端口。在一些实施例中,turn/http端口可以是tcp和udp端口3478。在一些实施例中,确定逻辑1202可以被配置为通过分析初始接收到的数据的一个或多个字节(例如,数据流的第一字节)来确定传入数据是turn数据还是http数据。

turn数据处理逻辑1204可以耦合到确定逻辑1202,并且可以被配置为响应于由确定逻辑1202确定传入数据是turn数据而对传入到中继服务器108的网络端口的数据进行处理。

http数据处理逻辑1206可以耦合到确定逻辑1202,并且可以被配置为响应于由确定逻辑1202确定传入数据是http数据而对传入到中继服务器108的网络端口的数据进行处理。

http数据处理逻辑1206可以被配置为辨识预先确定的异步javascript和可扩展标记语言(ajax)查询。ajax指示用于在后台向服务器发送数据和从服务器取回数据的一组客户侧的技术,并且可以包括html、可扩展html(xhtml)、css、文档对象模型(dom)、可扩展标记语言(xml)、可扩展样式表语言转换(xslt)、以及javascript。

响应于识别出预先确定的ajax查询,http数据处理逻辑1206可以被配置为生成响应以用于提供给网络浏览器。在一些实施例中,响应可以包括网络浏览器的互联网协议(ip)地址。

在一些实施例中,响应可以包括网络浏览器将指定数量的ajax查询发送到中继服务器108的指令。响应还可以包括指定数量的ajax查询中的每个ajax查询的序列号。

http数据处理逻辑1206可以被配置为至少部分地基于网络浏览器对由http数据处理逻辑1206生成的ajax查询指令的响应来计算第一计算设备102的网络浏览器与中继服务器108之间的通信的时延。

图13是根据各种实施例的可以包括在计算系统100的计算设备中的说明性网络通信组件1300的框图。特别地,在一些实施例中,网络通信组件1300可以用作第一计算设备102的网络通信组件112(并且将出于示例说明的目的在下面如此讨论)。

网络通信组件1300可以包括网页接收逻辑1302、ajax查询逻辑1304、响应接收逻辑1306、时延数据逻辑1308、以及webrtc逻辑1310。

网页接收逻辑1302可以被配置为接收来自网络服务器110的网页。网页可以包括第一计算设备102在中继服务器108的turn/http网络端口上执行至少一个ajax查询的指令。在一些实施例中,至少一个ajax查询可以包括多个ajax查询。

ajax查询逻辑1304可以与网页接收逻辑1302耦合,并且可以被配置为在中继服务器108的网络端口上执行至少一个ajax查询。

响应接收逻辑1306可以与网页接收逻辑1302耦合,并且可以被配置为从中继服务器108接收对由ajax查询逻辑1304执行的至少一个ajax查询的对应的至少一个响应。当至少一个ajax查询包括多个ajax查询时,至少一个响应可以包括对应的多个响应。在一些实施例中,至少一个响应可以包括第一计算设备102将指定数量的后续ajax查询发送到中继服务器108的指令,并且还可以对指定数量的ajax查询中的每一个的序列号进行指定。

时延数据逻辑1308可以与响应接收逻辑1306耦合,并且可以被配置为生成时延数据以用于提供给网络服务器110。时延数据逻辑1308可以至少部分地基于来自中继服务器108的对至少一个ajax查询的至少一个响应来生成时延数据。例如,时延数据逻辑1308可以包括中继服务器108响应至少一个ajax查询的平均时间。可以对所有查询取平均,也可以仅对一些查询取平均(例如,对除第一查询之外的所有查询取平均)。

在其中来自中继服务器108的响应包括第一计算设备102发送指定数量的后续ajax查询的指令的实施例中,时延数据逻辑1308可以通过接收来自中继服务器108的中继服务器时延数据(由中继服务器108基于后续ajax查询生成的)来生成时延数据。时延数据逻辑1308可以进一步对中继服务器时延数据中的至少一些进行格式化以用于提供给网络服务器110。

在一些实施例中,网络服务器110可以被配置为将时延数据存储在存储设备(例如,存储设备130)中,以用于选择用于第一计算设备102与另一计算设备(例如,第二计算设备104)之间的webrtc通信的turn服务器。

图14是根据各种实施例的可以包括在计算系统100的网络服务器中的说明性网络通信组件1400的框图。特别地,在一些实施例中,网络通信组件1400可以用作网络服务器110的网络通信组件120(并且将出于示例说明的目的在下面如此讨论)。

网络通信组件1400可以包括网页提供逻辑1402、接收逻辑1404、选择逻辑1406、指示符提供逻辑1408、浏览器比较逻辑1410、以及时延数据提供逻辑1412。网页提供逻辑1402可以被配置为将网页提供给第一计算设备102的网络浏览器。由网页提供逻辑1402提供的网页可以包括网络浏览器在中继服务器108的turn/http网络端口上执行至少一个ajax查询的指令。

接收逻辑1404可以耦合到网页提供逻辑1402,并且可以被配置为从第一计算设备102的网络浏览器接收表示网络浏览器与中继服务器108之间的时延的数据。数据可以至少部分地基于由网络浏览器执行网页中的指令(由网页提供逻辑1402提供的)。

在一些实施例中,接收逻辑1404可以被配置为将表示网络浏览器与中继服务器108之间的时延的数据存储在存储设备(例如,存储设备130)中的数据结构中。

在一些实施例中,网页提供逻辑1402和接收逻辑1404可以被配置为执行关于多个中继服务器的操作,并且存储设备中的数据结构可以存储表示第一计算设备102的网络浏览器与这些多个中继服务器之间的时延的数据。在这样的实施例中,选择逻辑1406可以与存储时延数据的存储设备(例如,存储设备130)耦合,并且可以被配置为基于表示时延的所存储的数据来选择中继服务器中的一个。例如,选择逻辑1406可以选择与第一计算设备102具有最小时延的中继服务器。

指示符提供逻辑1408可以与存储时延数据的存储设备(例如,存储设备130)耦合,并且可以被配置为将中继服务器108的指示符提供给第一计算设备102的网络浏览器。指示符可以指示中继服务器108是用于在网络浏览器与另一计算设备(例如,第二计算设备104或任何其它浏览器)之间建立webrtc通信的候选turn服务器。在一些实施例中,由指示符提供逻辑1408指示的中继服务器可以是由选择逻辑1406选择的中继服务器。

浏览器比较逻辑1410可以与存储时延数据的存储设备(例如,存储设备130)耦合,并且可以被配置为确定第二网络浏览器与第一计算设备102的网络浏览器在同一子网中。如果存储设备不包括指示第二网络浏览器与一个或多个中继服务器之间的时延的数据,则浏览器比较逻辑1410可以用于确定第二网络浏览器是否与对其而言存在数据被存储在存储设备中的网络浏览器在同一子网中;如果第二网络浏览器在同一子网中,则第二网络浏览器与各种中继服务器之间的时延可以类似于第一计算设备102的网络浏览器与各种中继服务器之间的时延,并且因此,可以使用第一计算设备102的网络服务器的时延数据来通知对用于与第二网络浏览器进行通信的中继服务器的选择。在这样的实施例中,选择逻辑1406可以基于表示与第一计算设备102的网络浏览器的时延的所存储的数据来选择中继服务器中的一个以用于与第二网络浏览器进行通信。例如,选择逻辑1406可以针对与第二网络浏览器的通信来选择与第一计算设备102具有最小时延的中继服务器。此外,指示符提供逻辑1408可以被配置为向第二网络浏览器提供所选择的中继服务器的指示符。

时延数据提供逻辑1412可以与存储时延数据的存储设备(例如,存储设备130)耦合,并且可以被配置为向中继服务器108提供网络浏览器-中继服务器时延数据。

图15和图16是根据各种实施例的分别用于计算系统100的网络服务器、计算设备、以及中继服务器之间的网络通信的说明性过程1500和1600的信号流程图。图15和图16分别示出了用于网络服务器110、第一计算设备102、以及中继服务器108(分别配置有网络通信组件1200、1300、以及1400)之间的网络通信的过程1500和1600,但是过程1500和1600可以由任何合适的计算设备执行。

在过程1500和1600中,网络服务器110可以将网页提供给第一计算设备102的网络浏览器。网页可以包括javascript代码,其使得浏览器在中继服务器108的turn/http网络端口上执行ajax查询(例如,get)的,以检查连接性和时延二者。在过程1500和1600中,为了更准确,可以进行多个ajax查询(例如,5个或10个httpget请求)。如果网络浏览器不能到达中继服务器108,则网络浏览器可以向网络服务器110返回错误代码。过程1500和1600可以在何种实体控制ajax查询的数量以及何种实体收集时延数据方面不同。

在过程1500中,第一计算设备102的浏览器可以执行中继服务器108的ajax查询,接收响应,并且然后执行中继服务器108的另一ajax查询(多达在网页中指定的数量)。然后,第一计算设备102的浏览器可以计算得到响应所花费的平均时间,并且可以将该信息提供给网络服务器110。这可以提供从浏览器到中继服务器108的数据传输的时延的指示。

在过程1600中,第一计算设备102的浏览器可以执行中继服务器108的第一ajax查询,并且中继服务器108可以利用用于第一计算设备102的浏览器的指令进行响应,该指令关于针对每个查询要使用什么序列号来进行多少个后续ajax查询。然后,第一计算设备102的网络浏览器可以根据来自中继服务器108的指令来进行后续ajax查询。然后,中继服务器108可以基于ajax查询和响应来执行时延测量。由于过程1600中的大多数ajax查询是由中继服务器108控制的,所以由网络服务器110提供给浏览器的、包括在网页中的javascript代码可以更简单。另外,如果恶意代理尝试篡改中继服务器-浏览器时延测量,则该尝试将因为恶意代理不知道正在使用什么序列号而不成功。

在一些实施例中,当中继服务器108响应ajax查询时,中继服务器108可以利用浏览器正在使用的外部ip地址进行响应。然后,网络浏览器可以将该信息提供给网络服务器110(例如,根据网页中提供的指令)。典型地,网络服务器到中继服务器的浏览器的外部ip地址是相同的,但是如果浏览器是多宿主的,则ip地址可能不同。网络服务器110可以被配置为记录该信息。

在一些实施例中,中继服务器108的存储设备128、网络服务器110的存储设备130、和/或第一计算设备102的存储设备122可以用于存储表示第一计算设备102的网络浏览器与中继服务器108之间的经测量的时延的数据。如上面讨论的,该经测量的时延可以至少部分地基于网络浏览器与中继服务器108的turn/http网络端口之间的通信。在一些实施例中,该数据可以存储在对于每个中继服务器反映许多位置(例如,计算设备上的网络浏览器)的连接性和时延测量的数据库中,并且可以实现快速确定在建立webrtc连接时要使用哪个中继服务器。

例如,图17示出了根据各种实施例的可以用于存储用于网络通信的源设备、目标设备、以及时延数据的数据结构1700。数据结构1700可以用于组织存储设备(例如,存储设备130或存储设备128)中的数据。数据结构1700包括针对一个或多个条目(例如,图17所示的条目1708-1712)的源字段1702、中继服务器字段1704、以及时延字段1706。源字段1702可以取标识webrtc连接的不同端点(例如,计算设备或计算设备上的浏览器)的值。中继服务器字段1704可以取标识可以用于促进这种webrtc连接的不同中继服务器的值。时延字段1706包括表示对应字段1702和1704中的源和中继服务器之间的时延的数据。如上面讨论的,如果要针对新的端点选择中继服务器,则可以对数据结构1700进行评估,以确定在与新的端点相同的子网中是否存在任何现有的端点(例如,当子网掩码为255.255.255.0时,新的端点192.168.1.52可以与端点192.168.1.14在相同的子网中)。字段1706的时延数据以毫秒示出,但是可以使用任何一个或多个度量。

图18是根据各种实施例的可以由图1的计算系统的中继服务器执行的用于网络通信的说明性过程1800的流程图。图15和图16的过程1500和1600分别可以包括过程1800的示例。在本文中将过程1800讨论为由与第一计算设备102通信的中继服务器108执行,但是过程1800可以由任何合适的计算设备执行,或者与任何合适的计算设备一起执行。

在1802处,中继服务器108(例如,确定逻辑1202)可以确定从第一计算设备102的网络浏览器传入到中继服务器108的turn/http网络端口的第一数据是turn数据还是http数据。

在1804处,响应于确定第一数据是turn数据,中继服务器108(例如,turn数据处理逻辑1204)可以根据turn协议对第一数据进行处理。

在1806处,中继服务器108(例如,确定逻辑1202)可以确定从第一计算设备102的网络浏览器传入到中继服务器108的turn/http网络端口的第二数据是turn数据还是http数据。

在1808处,响应于确定第二数据是http数据,中继服务器108(例如,http数据处理逻辑1206)可以根据http协议对第二数据进行处理。然后,过程1800结束。

图19是根据各种实施例的可以由计算系统100的计算设备执行的用于网络通信的说明性过程1900的流程图。图15和图16的过程1500和1600分别可以包括过程1900的示例。在本文中将过程1900讨论为由与中继服务器108和网络服务器110通信的第一计算设备102执行,但是过程1900可以由任何合适的计算设备执行,或者与任何合适的计算设备一起执行。

在1902处,第一计算设备102(例如,网页接收逻辑1302)可以接收来自网络服务器110的网页。网页可以包括用于第一计算设备102的网络浏览器在中继服务器108的turn/http网络端口上执行至少一个ajax查询的指令。

在1904处,第一计算设备102(例如,ajax查询逻辑1304)可以在turn/http网络端口上执行至少一个ajax查询。

在1906处,第一计算设备102(例如,响应接收逻辑1306)可以从中继服务器108接收对至少一个ajax查询(在1904中执行的)的对应的至少一个响应。

在1908处,第一计算设备102(例如,时延数据逻辑1308)可以生成时延数据以用于提供给网络服务器110。时延数据可以至少部分地基于在1906处接收到的至少一个响应。然后,过程1900可以结束。

图20是根据各种实施例的可以由计算系统100的网络服务器执行的用于网络通信的说明性过程2000的流程图。图15和图16的过程1500和1600分别可以包括过程2000的示例。在本文中将过程2000讨论为由与第一计算设备102通信的网络服务器110执行,但是过程2000可以由任何合适的计算设备执行,或者与任何合适的计算设备一起执行。

在2002处,网络服务器110(例如,网页提供逻辑1402)可以将网页提供给第一计算设备102的网络浏览器。网页可以包括用于网络浏览器在中继服务器108的turn/http网络端口上执行至少一个ajax查询的指令。

在2004处,网络服务器110(例如,接收逻辑1404)可以从网络浏览器接收表示网络浏览器与中继服务器108之间的时延的数据。该数据可以至少部分地基于由网络浏览器执行指令。然后,过程2000可以结束。

下面参考图21-25讨论的实施例可以改进webrtc通信中的候选发现的性能。常规地,建立webrtc连接涉及在两个设备之间交换提议(offer)和应答(answer),随后是附加的候选。在这种上下文中,“候选”可以是能够用于通信的可能的网络接口,并且常规的候选发现涉及每个设备联系stun服务器(例如,stun服务器152),以使得设备能够得到关于其自己的外部地址的信息。下面参考图21-25讨论的实施例可以在并非必须与stun服务器进行通信的情况下实现相同的结果,并且相反,可以使用高效的无状态协议,其通过一个网络循环来减少webrtc连接开销并简化设备的webrtc堆栈。这可以通过使网络服务器向设备发送已加密分组来完成,设备必须在特定udp端口上将该已加密分组发送回服务器。如果服务器接收到分组,则其中的已加密数据告知服务器哪个网络浏览器应该得到附加的候选。这种方法可以移除设备侧上对stun的需求,从webrtc设置中移除一个完整的循环,压缩webrtc提议和应答,以及无状态地执行服务器地址检测。

图21是根据各种实施例的可以包括在计算系统100的计算设备中的说明性网络通信组件2100的框图。特别地,在一些实施例中,网络通信组件2100可以用作第一计算设备102的网络通信组件112(并且将出于示例说明的目的在下面如此讨论)。

网络通信组件2100可以包括提议生成逻辑2102、提议变换逻辑2104、提供逻辑2106、应答接收逻辑2108、以及响应变换逻辑2110。

提议生成逻辑2102可以被配置为以第一格式生成webrtc提议,以用于在第一计算设备102与第二计算设备104(例如,第二计算设备104的浏览器,或更一般地,任何其它浏览器)之间建立webrtc通信。在一些实施例中,第一格式可以是会话描述协议(sdp)格式。

提议变换逻辑2104可以耦合到提议生成逻辑2102,并且可以被配置为将由提议生成逻辑2102生成的webrtc提议从第一格式变换为二进制块。在一些实施例中,提议变换逻辑2104可以使用javascript变换器将以第一格式的webrtc提议变换为二进制块。在一些实施例中,二进制块的大小可以小于以第一格式的webrtc提议的大小。这种变换对于减少需要传输的数据量(特别是当数据定额有效时,例如,利用常见的蜂窝数据协议)可以是有用的,而且因为网络服务器110可能由以c编程语言编写的软件实现,以c编程语言解析文本可能很麻烦。然而,第一计算设备102的网络浏览器可以使用javascript容易地解析文本,并且因此可以在第一计算设备102处容易地执行从第一格式到二进制的变换。

提供逻辑2106可以与提议变换逻辑2104耦合,并且可以被配置为将二进制块提供给网络服务器110。网络服务器110可以被配置为随后向第二计算设备104发送对应的提议。在一些实施例中,提供逻辑2106可以被配置为使用websocket协议向网络服务器110提供二进制块。

应答接收逻辑2108被配置为接收来自网络服务器110的应答。由应答接收逻辑2108接收的应答可以是以二进制格式的,并且可以响应于接收到来自第二计算设备104的对被变换的提议的应答而由网络服务器110将该应答提供给第一计算设备102。

响应变换逻辑2110可以与应答接收逻辑2108耦合,并且可以被配置为将响应从二进制格式变换为sdp格式。

图22是根据各种实施例的可以包括在计算系统100的网络服务器中的说明性网络通信组件的框图。特别地,在一些实施例中,网络通信组件2200可以用作网络服务器110的网络通信组件120(并且将出于示例说明的目的在下面如此讨论)。

网络通信组件2200可以包括提议接收逻辑2202、提议转发逻辑2204、tcp消息逻辑2206、地址识别逻辑2208、应答接收逻辑2210、应答转发逻辑2212、以及候选逻辑2214。

提议接收逻辑2202可以被配置为接收从第一计算设备102的网络浏览器到第二计算设备104的webrtc提议。

提议转发逻辑2204可以与提议接收逻辑2202耦合,并且可以被配置为将webrtc提议转发到第二计算设备104。

tcp消息逻辑2206可以耦合到提议接收逻辑2202,并且可以被配置为将tcp消息提供给第二计算设备104。tcp消息可以包括第二计算设备104向网络服务器110发送udp消息的命令。udp消息可以包括在tcp消息中。在一些实施例中,udp消息可以包括第一计算设备102的网络浏览器的标识符。在一些实施例中,可以使用网络服务器110已知的密钥对udp消息进行加密,如下面进一步讨论的。

通过响应于来自网络服务器110的命令而发送udp消息,第二计算设备104可以将第二计算设备104的公共ip和端口传送到网络服务器110。网络服务器110可以使用该信息来联系第二计算设备104。特别地,当第二计算设备104发送udp消息时,其使得路由器或其它中间设备(例如,nat)添加udp端口映射,以便于网络服务器110能够了解udp消息源自哪个ip地址和端口(如下面参考地址识别逻辑2208所讨论的)。网络服务器110还可以以附加的webrtc候选的形式将ip地址和端口信息转发到第一计算设备102的浏览器(如下面参考候选逻辑2214所讨论的)。

在一些实施例中,可以期望使网络服务器110保持尽可能“无状态”,因为网络服务器110仅维护少量的(或不维护)关于先前事件的信息以用于响应传入数据。在一些这样的实施例中,udp消息可以包括将响应发送回第一计算设备102的浏览器必要的数据中的全部(从而网络服务器110不需要存储该数据)。该数据可以包括例如第一计算设备102的浏览器的websocket标识符。还可以使用仅网络服务器110已知的随机化密钥对udp消息进行认证(例如,使用hmac-sha256)和加密(例如,使用aes128-cbc)。udp消息还可以包括防中继令牌。在接收到udp消息时,网络服务器110可以对消息进行认证和解密,然后使用消息中的信息将所添加的候选发送到第一计算设备102的浏览器。

地址识别逻辑2208可以被配置为基于udp消息来识别用于第二计算设备104的ip地址和端口,该udp消息是响应于包括在tcp消息中的命令由第二计算设备104发送到网络服务器110的。在一些实施例中,地址识别逻辑2208可以通过识别用于第二计算设备104的公共地址来识别用于第二计算设备104的ip地址和端口,该公共地址被存储为位于网络服务器110与第二计算设备104之间的中间设备(例如,nat或代理屏障)中的udp端口映射。

应答接收逻辑2210可以被配置为响应于由第二计算设备104接收到webrtc提议而接收来自第二计算设备104的webrtc应答。

应答转发逻辑2212可以耦合到应答接收逻辑2210,并且可以被配置为将webrtc应答转发到第一计算设备102的网络浏览器。

候选逻辑2214可以耦合到地址识别逻辑2208,并且可以被配置为向第一计算设备102的网络浏览器发送附加的候选信息。附加的候选信息可以包括用于第二计算设备104的ip地址和端口。

图23是根据各种实施例的用于计算系统100的网络服务器、第一计算设备、以及第二计算设备之间的网络通信的说明性过程2300的信号流程图。在图23中示出了用于第一计算设备102、网络服务器110、以及第二计算设备104之间的网络通信的过程2300,但是过程2300可以由任何合适的计算设备执行。

在过程2300中,第一计算设备102的浏览器可以将用于与第二计算设备104的通信的webrtc提议从sdp变换为二进制,并且然后可以经由websocket将经变换的提议发送到网络服务器110。网络服务器110可以接收来自第一计算设备102的网络浏览器的webrtc提议,并且可以添加额外的命令,该命令指示第二计算设备104在特定的ip地址和端口上一次或多次将udp分组发送回网络服务器。提议和额外的命令在图23中标记为“已加密块发送(tcp)”。该udp分组可以等同地包括在命令中,因此第二计算设备104简单地取来自命令的数据,并将其发送到指定的ip地址和端口,而无需进行任何修改。

一旦webrtc提议和额外的命令二者都到达第二计算设备104,则第二计算设备104可以利用要被发送回第一计算设备102的浏览器的webrtc应答来响应网络服务器110。在发送webrtc应答之后,第二计算设备104可以执行udp发送命令,并将一系列等同的udp分组发回网络服务器110(图23中标记为“已加密块(udp)”)。

在接收到webrtc应答时,网络服务器110可以将应答转发到第一计算设备102的浏览器。在接收到udp分组时,网络服务器110可以对传入的udp分组进行解码,并且使用来自传入的udp分组的数据将附加的候选信息发送到第一计算设备102的浏览器。例如,网络服务器110可以确定第二计算设备104具有公共ip:端口45.62.16.76:5922,并且可以将该地址作为附加的候选发送到第一计算设备102的浏览器。所添加的候选和webrtc应答可以以任何次序到达第一计算设备102的浏览器。

图24是根据各种实施例的可以由计算系统100的计算设备执行的用于网络通信的说明性过程2400的流程图。图23的过程2300可以包括过程2400的实施例。在本文中将过程2400讨论为由与网络服务器110和第二计算设备104通信的第一计算设备102执行,但是过程2400可以由任何合适的计算设备执行,或者与任何合适的计算设备一起执行。

在2402处,第一计算设备102(例如,提议生成逻辑2102)可以以第一格式生成webrtc提议,以用于在第一计算设备102与第二计算设备104之间建立webrtc通信。

在2404处,第一计算设备102(例如,提议变换逻辑2104)可以将在2402处生成的webrtc提议从第一格式变换为二进制块。

在2406处,第一计算设备102(例如,提供逻辑2106)可以向网络服务器110提供二进制块。网络服务器110可以被配置为将对应的提议发送到第二计算设备104。然后,过程2400可以结束。

图25是根据各种实施例的可以由图1的计算系统的网络服务器执行的用于网络通信的说明性过程2500的流程图。图23的过程2300可以包括过程2500的实施例。在本文中将过程2500讨论为由与第一计算设备102和第二计算设备104通信的网络服务器110执行,但是过程2500可以由任何合适的计算设备执行,或者与任何合适的计算设备一起执行。

在2502处,网络服务器110(例如,提议接收逻辑2202)可以接收从第一计算设备102的浏览器到第二计算设备104的webrtc提议。

在2504处,网络服务器110(例如,提议转发逻辑2204)可以将webrtc提议转发给第二计算设备104。

在2506处,网络服务器110(例如,tcp消息逻辑2206)可以向第二计算设备104提供tcp消息。tcp消息可以包括第二计算设备104将udp消息发送到网络服务器110的命令。udp消息可以包括在tcp消息中。

在2508处,网络服务器110(例如,地址识别逻辑2208)可以基于udp消息来识别用于第二计算设备104的ip地址和端口,该udp消息是响应于2506的命令由第二计算设备104发送到网络服务器110的。然后,过程2500可以结束。

下面参考图26-29讨论的各种实施例可以提供中继服务器(例如,webrtc系统中的turn服务器)的改进布置,以及用于选择哪些中继服务器用于特定端点之间的通信的技术。特别地,公开了这样的技术:联合在不同位置中的中继服务器,以使得业务路由是高效的并且提供改进的用户体验。在一些实施例中,当对在不同地理位置中的中继服务器进行配置时,服务器可以可通信地连接,以使得能够列出位置、当前负载、以及彼此可用的带宽的清单,并且对用于各种应用的适当的中继服务器做出动态的选择(例如,以每个浏览器为基础)。在常规方法中,可以建立单个中继服务器(例如,单个turn服务器)并将其用于特定的网络应用。如上面讨论的,当端点远离单个中继服务器时,该方法可能是极其低效的。例如,在印度的两台计算机正常具有很短的直接循环时间,但是如果webrtc端点中的一个需要位于美国的turn服务器,则业务必须去往美国并返回,这导致不良的用户体验。

图26和图27分别示出了用于联合中继服务器的两种技术:星形配置和网格配置。在每种技术中,可以连接多个中继服务器并将其配置为共享位置和带宽/负载信息。可以将该信息输入到任何合适的算法以用于确定对任何特定的网络应用(例如,任何特定的请求浏览器)给出何种中继服务器配置。在一些实施例中,参考图26和图27讨论的配置中的每个中继服务器可以定期地(例如,每10或15分钟)给出安全性令牌,其允许网络服务器110(与中继服务器通信的)生成能够由浏览器用于访问中继服务器的能力的认证用户名和密码对。在一些实施例中,中继服务器可以不生成令牌,并且相反,例如令牌能够由将令牌给予浏览器的网络服务器生成(假设网络服务器知道如何对令牌进行编码)。例如,网络服务器可以在令牌中指定预先确定的时间量(“超时”),对令牌进行签名,并将令牌给予网络浏览器。然后,网络浏览器可以在预先确定的时间量内使用该令牌,其中中继服务器接受由网络服务器签名的令牌。

图26和图27中讨论的中继服务器可以是以其它方式的常规turn服务器,例如,或者可以采取本文公开的中继服务器108的实施例中的任一个实施例的形式。

图26示出了根据各种实施例的可以包括在计算系统100中的多个中继服务器的星形配置2600。在星形配置2600中,主中继服务器2602连接到多个从中继服务器2604-2610。主中继服务器2602可以与网络服务器110位于一处,而从中继服务器2604-2610可以是独立的服务器。网络服务器110可以接收浏览器请求(例如,来自包括在第一计算设备102中的浏览器的),并且可以间歇地向请求浏览器提供中继服务器配置(例如,当浏览器需要这种配置来经由webrtc进行通信时)。在其中仅有单个主中继服务器2602并且没有从中继服务器的实施例中,主中继服务器2602是唯一可用的中继服务器,并且因此,网络服务器110可以将主中继服务器2602的标识符返回给请求浏览器。当从中继服务器(例如,从中继服务器2604-2610)存在时,可以将其配置为维持与主中继服务器2602的tcp控制连接。这些控制连接可以用于对服务器负载进行中继以及向主中继服务器2602指示存在从属。主中继服务器2602可以存储表示从中继服务器2604-2610上的负载的数据(例如,如下面参考图28所讨论的),并且网络服务器110可以使用该数据来针对请求浏览器选择适当的中继服务器布置。例如,主中继服务器2602可以每15分钟将针对每个从中继服务器2604-2610的业务统计记录到数据库。在一些实施例中,从中继服务器可以向多于一个主中继服务器注册。在一些实施例中,主中继服务器还可以是另一主机的从中继服务器。在星形配置2600中,主中继服务器2602与从中继服务器2604-2610之间的连接可以由网络管理员静态地配置。

图27示出了根据各种实施例的可以包括在计算系统100中的多个中继服务器的网格配置2700。网格配置2700包括多个主中继服务器2702-2710。主中继服务器2702-2710可以使用分布式散列表可通信地耦合,以使得可以利用一个或多个现有主中继服务器的列表将每个主中继服务器2702-2710设置在计算网络(例如,互联网)上的任何地方。随着更多的服务器上线,这些服务器彼此连接并形成网格。在一些这样的实施例中,每个主中继服务器可以强制规定主中继服务器可以对其它主中继服务器进行的连接的数量的上限(例如,至多20个连接)。根据已知的技术,主中继服务器可以彼此发现,并且应用图形平衡算法来统计地平衡总体网格网络(即使主中继服务器中的任一个都不知道整个拓扑)。在网格配置2700中,可以动态地配置主中继服务器之间的连接。在一些实施例中,每个主中继服务器2702-2710可以向其邻居发送认证令牌和使用数据。在一些实施例中,每个主中继服务器2702-2710可以记录其中继了多少业务(并且当相关时,记录所中继的业务是用于哪个主中继服务器的)。

图28示出了根据各种实施例的可以用于存储用于网络通信的负载数据的示例数据结构2800。数据结构2800可以用于将来自星形配置和/或网格配置的数据组织在存储设备(例如,存储设备130或存储设备128)中,并且可以由网络服务器110在针对请求网络应用选择中继服务器布置时进行访问。数据结构2800包括针对一个或多个条目(例如,图28中示出的条目2812-2816)的中继服务器字段2802、当前主机字段2804、当前负载字段2806、先前负载1字段2808、以及先前负载2字段2810。中继服务器字段2802可以取标识不同中继服务器的值。当前主机字段2804可以取标识这样的主中继服务器的值:对应的中继服务器字段2802之中的服务器当前正在针对该主中继服务器路由业务。当不存在分离的主时,该值可以是n/a或另一合适的值。当前负载字段2806可以取表示对应的中继服务器字段2802中所识别出的服务器上的当前负载的值。在图28中,将当前负载表达为容量的百分比,但是可以使用任何合适的(多个)负载度量。先前负载1字段2808和先前负载2字段2810可以取表示在两个先前时间点(例如,由某些预先确定的间隔分隔开的)对应的中继服务器字段2802中所识别出的服务器上的负载的值。虽然图28中示出了两个“历史”负载数据点,但是可以使用任何数量,并且数据的测量时间可以由任何期望的间隔分隔开。

在其中每个中继服务器收集使用数据的实施例中,每个中继服务器可以记录哪个主中继服务器路由浏览器以使用其中继服务,以及中继服务器针对该主中继服务器执行了多少中继。每个中继服务器可以周期性地通知每个主中继服务器其总体业务负载(例如,以会话计数和所中继的位来测量)以及由于其认证令牌的会话的业务负载(例如,会话计数和所中继的位)。在这样的实施例中,每个主中继服务器可以访问表示哪些浏览器生成中继服务器负载以及该负载在何处生成的数据。

在星形配置和网格配置二者中,当网络服务器110需要中继服务器布置来提供给网络应用时,网络服务器110可以访问数据结构2800,并且至少部分地基于其中的负载数据来选择合适的中继服务器或多个服务器。在一些实施例中,网络服务器110还可以访问指示各种中继服务器的地理位置的所存储的数据,并且可以至少部分地基于其中的位置数据来选择合适的中继服务器或多个服务器。图29示出了根据各种实施例的可以用于存储用于网络通信的中继服务器位置数据的示例数据结构2900。数据结构2900可以用于将来自星形配置和/或网格配置的数据组织在存储设备(例如,存储设备130或存储设备128)中,并且可以由网络服务器110在针对请求网络应用选择中继服务器布置时进行访问。数据结构2900可以采取ip地址位置表的形式,并且可以包括中继服务器字段2902和位置字段2904以及示例条目2906-2910。中继服务器字段2902可以取指定对应的中继服务器字段2902中所识别出的中继服务器的位置的值。在一些实施例中,位置字段2904可以包括在数据结构2900中。

当浏览器需要中继服务器布置(例如,turn服务器布置)时,网络服务器110可能需要快速识别合适的布置。在一些实施例中,网络服务器110可以查看浏览器请求的ip位置并将其匹配到地理上最接近的中继服务器(基于数据结构2900中的数据)。在地理地选择的中继服务器不可用的情况下,网络服务器110还可以在配置行中包括“备用”中继服务器。可以在任何合适的数据(例如,负载数据)的基础上做出对该备用中继服务器的选择。

本文公开的实施例中的许多实施例与改进的webrtc性能有关。webrtc可以提供用于浏览器到浏览器和浏览器到设备的通信的有用的协议,并且webrtc的大多数常规用途是点到点的。下面描述的是使用webrtc通信来创建基于网络的网格网络的技术,其中浏览器对等点一起使用分布式散列表。网格中的每个连接可以是webrtc连接,并且浏览器可以用作用于网格中的通信的路由器。这样的基础结构可以用于发送消息、文件、音频、以及视频,并且可以用于执行诸如搜索和远程协作的网络操作。一旦被配置,则该网格中的浏览器可以不需要中央服务器来进行通信,并且可以基本上独立于任何中央实体进行操作。这样的基础结构可以根据网络技术(仅需要兼容的浏览器)构建,并且因此可以是平台无关的,并且可以容易地扩展并分布到许多平台。这以代表对用于计算网格的常规方法的改进,该常规方法需要安装特定于平台的专有软件、或以服务器为中心的解决方案,这需要大量的后端基础结构。

在一些实施例中,可以由网络服务器110向支持webrtc的第一计算设备102的浏览器提供javascript应用,该javascript应用被构建以形成浏览器到浏览器对等网格网络(例如,利用第二计算设备104的webrtc兼容的浏览器)。该对等网络中的浏览器在下面的讨论中可以被称为“节点”。除了提供应用之外,网络服务器110还可以在第一计算设备102的浏览器与若干其它浏览器之间交换webrtc提议,以使得第一计算设备102的浏览器可以具有若干初始数据连接。一旦第一计算设备102的浏览器具有若干初始数据连接,则浏览器可以不再需要与网络服务器110进行通信,并且相反,能够使用其到其它节点的webrtc连接来发现新的节点,经由现有的节点与新的节点交换webrtc连接提议,以及使用密码浏览器应用程序接口(api)来提供端到端的安全性。

在一些特定实施例中,javascript应用可以利用网络密码api和webrtcapi(二者均由万维网联盟定义)。网络密码api可以使得浏览器能够具有唯一的、可证明的身份,并且使用公共密钥基础结构(pki)对消息进行加密、解密、签名、以及验证。webrtcapi可以使得浏览器能够创建与其它浏览器的直接连接。javascript应用可以例如使每个浏览器建立与其它浏览器的多个webrtc连接(例如,具有预先确定的最大值,例如20),从而形成能够在节点之间路由消息的平衡网格。由于每个浏览器能够经由网络密码api使用pki对消息进行加密和签名,所以消息能够在网格中安全地逐节点移动。

可以使用多种技术中的任何一种来传递上面讨论的网格中的消息。例如,图30是根据各种实施例的可以由计算系统100的计算设备执行的用于网络通信的说明性过程3000的流程图。在本文中将过程3000讨论为由第一计算设备102的浏览器执行,但是过程3000可以由任何合适的计算设备执行。

在3002处,第一计算设备102的浏览器可以生成证书和对应的节点标识符。节点标识符可以是证书的散列(例如,32位散列)。

在3004处,浏览器可以向对等节点发送随机数(nonce),以发起与对等节点(例如,第二计算设备104的浏览器)的连接。随机数是可以由对等节点签名并返回的随机字符串。

在3006处,浏览器可以接收来自对等节点的已签名随机数。

在3008处,浏览器可以基于已签名随机数来确定对等节点的节点标识符。例如,浏览器可以基于已签名随机数来学习并验证对等节点的节点标识符。

在3010处,浏览器可以基于对等节点标识符来计算并存储浏览器与对等节点之间的距离。在一些实施例中,距离函数可以被定义为在浏览器的节点标识符与对等节点的节点标识符之间以位为单位的节点标识符的长度(例如,32)减去在相同位置处相同的位的数量。例如,如果浏览器节点标识符是101011并且对等节点标识符是110001,则浏览器与对等节点之间的距离是6-2=4。在一些实施例中,浏览器可以维持与具有给定距离的对等节点的最大数量或预先确定数量的连接(例如,距离为3处4个节点、距离为2处3个节点等)。对给定距离处的对等节点的数量进行恰当选择的结果可以是平衡图。

在3012处,浏览器可以利用目标节点的节点标识符对去往目标节点的消息加前缀。

在3014处,浏览器可以将经加前缀的消息发送到这样的节点:浏览器与该节点连接,该节点具有到目标节点的最短距离(具有如上面参考3010讨论地定义的距离)。然后,过程3000可以结束。消息的接收方将重复3014的操作,直到该消息无法路由或者到达其目的地为止。即使在非常大的网格中,这种方法典型地仅需要若干“跳跃(hop)”来在任何源与目标之间路由消息。

在一些实施例中,根据已知的技术,可以将过程3000修改为使用分布式散列表或生成树(spanningtree)多播方法。一旦构建了网格,应用就能够定义和使用诸如sendmessage()、sendmulticast()、以及gethashentry()的原语(用于确定节点标识符)以发现其它节点、广告服务,并且分发关于文件和其它数据的信息。例如,浏览器上的用户可以向许多其它浏览器发送多播查询。

图31是可以用于实现本文公开的实施例中的任何合适的实施例的说明性计算设备3100的框图。虽然图31中示出了多个组件,但是各种实施例可以在适当时针对要执行的网络通信操作来省略组件。计算设备3100可以包括输入/输出(i/o)设备3130。i/o设备3130可以包括图像捕获设备3124、显示器3132、通信设备3134、和/或其它i/o设备3140。在一些实施例中,i/o设备3130可以包括上面参考图1讨论的外围设备中的一个或多个。虽然i/o设备3130(以及本文描述的其它组件)可能以复数引用,但是在i/o设备3130中可以包括任何数量的i/o设备(并且类似地,任何组件可以包括多个这样的组件)。

在一些实施例中,图像捕获设备3124可以包括例如一个或多个数字照相机,并且可以使用任何成像波长(例如,可见光或红外光)。如本文所使用的,术语“照相机”可以包括静止图像照相机和摄像机。在一些实施例中,图像捕获设备3124可以捕获视频,例如,高清晰度视频。在一些实施例中,图像捕获设备3124可以被配置为经由有线或无线通信路径将图像数据(例如,视频数据)流送到其它设备。例如,图像捕获设备3124可以包括在第一计算设备102中,但是可以由第二计算设备104使用webrtc连接来进行控制。

显示器3132可以包括例如一个或多个平视显示器(即,包括以光学准直器配置布置的投影仪和组合器的显示器,用于提供数据而不需要用户远离他或她的典型视点来观看)、计算机监视器、投影仪、触摸屏显示器、液晶显示器(lcd)、发光二极管显示器、或平板显示器。

通信设备3134可以包括一个或多个设备,其实现实例化计算设备3100的各种设备与计算设备3100外部的设备之间的无线和/或有线通信。特别地,通信设备3134可以实现图1中示出的通信路径中的一个或多个,并且可以包括用于支持通信路径108、110、以及112的合适的硬件,例如,网络接口卡、调制解调器、wifi设备、蓝牙设备、近场通信(nfc)设备等。例如,如本领域已知的,通信设备3134可以提供支持一个或多个网络端口所需的硬件。

其它i/o设备3140可以包括任何合适的i/o设备,例如,键盘、光标控制设备(例如,鼠标、触笔、触摸板)、条形码读取器、快速响应(qr)代码读取器、rfid读取器、短距离无线接收器(例如,蓝牙接收器)、音频捕获设备(其可以包括以各种配置布置的一个或多个麦克风)、音频输出设备(例如,一个或多个扬声器或其它音频转换器,其可以例如安装在一个或多个耳机或耳塞中)、打印机、投影仪、附加的存储设备、或任何其它合适的i/o设备。

计算设备3100可以包括逻辑3102和i/o设备接口3138。i/o设备接口3138可以被配置为接收来自i/o设备3130的数据并将该数据提供给逻辑3102,并且还可以被配置为接收来自逻辑3102的数据并将其提供给i/o设备3130。计算设备3100可以包括存储设备3136。存储设备3136可以用作本文公开的存储设备中的任何一个(例如,图1所示的存储设备122、124、142、128、130、以及126中的任何一个)。在一些实施例中,存储设备3136可以包括一个或多个数据库或其它数据存储结构,其可以包括用于存储本文所描述的用于网络通信操作的数据中的任何数据的存储器结构。上面讨论了可以包括在存储设备3136中的数据结构的各种示例。存储设备3136可以包括任何易失性或非易失性存储器设备,举例来说,例如,一个或多个硬盘驱动器、固态逻辑、或便携式存储介质。逻辑3102可以包括以任何合适的组合的本文公开的逻辑中的任何一个(例如,参考网络通信组件中的任何一个)。

在一些实施例中,计算设备3100可以是移动计算设备。如本文所使用的,“移动计算设备”可以指示被配置以供用户随身携带的计算设备。在一些实施例中,移动计算设备可以是可穿戴计算设备,并且可以集成到衣服、配饰、或者被配置为穿戴在用户(或“穿戴者”)的身体上的其它支持结构中。用于移动计算设备102的合适的支持结构的示例可以包括眼镜、头戴耳机、发饰(例如,头带或发夹)、耳机、首饰(例如,胸针、耳环、或项链)、腕带(例如,手表)、颈带(例如,领带或围巾)、衣服(例如,衬衫、裤子、连衣裙、短裙、或夹克)、帽子、鞋子、系带或名称标签、隐形眼镜、或可植入支持结构、以及其它。在一些实施例中,移动计算设备可以是被配置以供在口袋、背包、或其它携带箱中携带的计算设备。移动计算设备的示例包括蜂窝电话、智能电话、其它个人移动通信设备、平板电脑、电子书阅读器、个人数字助理、膝上型计算机、或其它这种计算设备。例如,由移动计算设备执行的网络通信和其它操作可以由移动计算设备上的应用或插件进行控制。虽然移动计算设备可能以单数引用,但是移动计算设备可以包括与用户相关联的两个或更多个不同的设备。例如,移动计算设备可以包括与智能电话通信的腕上安装的计算设备。在该示例中,由移动计算设备执行的处理操作可以分布在腕上安装的计算设备与智能电话之间。

在一些实施例中,计算设备3100可以是固定式个人计算设备。如本文所使用的,“固定式个人计算设备”可以指示被配置为半永久地安置在表面上的计算设备(例如,如安置在机架中的服务器或安置在桌上的台式计算机)。可以用作固定式个人计算设备的个人计算设备的示例包括台式计算设备、销售点终端、位于设施中的安全台的终端、以及大型共享计算亭(kiosk)。例如,由固定式个人计算设备执行的网络通信和其它操作可以由固定式个人计算设备上的应用或插件进行控制控制。在一些实施例中,固定式个人计算设备或远程计算设备(下面讨论的)可以具有比移动计算设备多的计算资源(例如,处理能力、存储器、和/或通信带宽)。因此,在一些实施例中,可以通过通信路径将由移动计算设备捕获并初步处理的数据传输到固定式个人计算设备或远程计算设备以供进一步处理。

在一些实施例中,计算设备3100可以是远程计算设备。如本文所使用的,“远程计算设备”可以指示远离用户的一个或多个服务器(例如,以“云”计算配置布置的)或其它计算设备。可以根据任何远程有线或无线通信协议来配置远程计算设备与任何其它计算设备之间的通信。在一些实施例中,远程计算设备可以具有比移动计算设备或固定式个人计算设备多的计算资源(例如,处理能力、存储器、和/或通信带宽)。因此,在一些实施例中,可以通过一个或多个通信路径将由移动计算设备和/或固定式个人计算设备捕获并初步处理的数据传输到远程计算设备以供进一步处理。

以下段落提供了本文公开的实施例中的各种实施例的示例。

实例a1是一种计算设备,包括:第一逻辑,其用于接收表示网页的第一数据集,并且可以进一步指定该第一数据集包括与不受用于提供网页的网络服务器的平台支持的平台特征相关联的部分;第二逻辑,其耦合到第一逻辑,用于通过从第一数据集中移除该部分来生成第二数据集;第三逻辑,其耦合到第二逻辑,用于通过对第二数据集执行至少一个缩小操作以便减小第二数据集的大小来生成第三数据集;以及第四逻辑,其耦合到第三逻辑,用于将第三数据集提供给网络服务器,其中,网络服务器响应于由第二计算设备向网络服务器请求网页而将第三数据集提供给第二计算设备。

示例a2可以包括示例a1的主题,并且可以进一步指定第二逻辑还用于:接收平台的指示符;以及通过访问平台与平台所支持的平台特征之间的所存储的关联性来确定该平台特征是不受平台支持的。

示例a3可以包括示例a2的主题,并且可以进一步指定第二逻辑,作为生成第二数据集的部分:用于在第一数据集中识别与平台特征相关联的标签;以及基于标签来识别该部分。

示例a4可以包括示例a1-3中任一项的主题,并且可以进一步指定:平台是第一平台;网络服务器是第一网络服务器;平台特征是受用于提供网页的第二网络服务器的第二平台支持的;第二逻辑用于基于第一数据集来生成第四数据集,其中,第四数据集包括该部分;第三逻辑用于通过对第四数据集执行至少一个缩小操作以便减小第四数据集的大小来生成第五数据集;以及第四逻辑用于:将第三数据集和第五数据集提供给第一网络服务器,以及将第三数据集和第五数据集提供给第二网络服务器。

示例a5可以包括示例a4的主题,并且可以进一步指定第四逻辑用于以单个文件将第三数据集和第五数据集提供给第一网络服务器。

示例a6可以包括示例a5的主题,并且可以进一步指定单个文件是单个头文件。

示例a7可以包括示例a1-6中任一项的主题,并且可以进一步指定第一数据集包括至少一个图像文件,并且其中,第三逻辑作为生成第三数据集的部分,用于利用至少一个图像文件的内联表示来替换至少一个图像文件。

示例a8可以包括示例a1-7中任一项的主题,并且可以进一步指定第一数据集包括代码注释,并且其中,第三逻辑作为生成第三数据集的部分,用于移除代码注释。

示例a9可以包括示例a1-8中任一项的主题,并且可以进一步指定:网页包括在第二计算设备与第三计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a10可以包括示例a1-9中任一项的主题,并且可以进一步指定:网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a11可以包括示例a1-10中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a12可以包括示例a1-11中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在第二计算设备与第三计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到第三计算设备。

示例a13是一种或多种计算机可读介质,其上具有指令,该指令响应于由计算设备的一个或多个处理设备执行而使得计算设备:接收表示网页的第一数据集,其中,第一数据集包括与不受用于提供网页的网络服务器的平台支持的平台特征相关联的部分;通过从第一数据集中移除该部分来生成第二数据集;通过对第二数据集执行至少一个缩小操作以便减小第二数据集的大小来生成第三数据集;以及将第三数据集提供给网络服务器,其中,网络服务器响应于由第二计算设备向网络服务器请求网页而将第三数据集提供给第二计算设备。

示例a14可以包括示例a13的主题,并且可以进一步指定指令还使得计算设备:接收平台的指示符;以及通过访问平台与平台所支持的平台特征之间的所存储的关联性来确定该平台特征是不受平台支持的。

示例a15可以包括示例a14的主题,并且可以进一步指定指令使得计算设备,作为生成第二数据集的部分:用于在第一数据集中识别与平台特征相关联的标签;以及基于标签来识别该部分。

示例a16可以包括示例a13-15中任一项的主题,并且可以进一步指定:平台是第一平台,网络服务器是第一网络服务器,以及平台特征是受用于提供网页的第二网络服务器的第二平台支持的,并且进一步指定指令还使得计算设备:基于第一数据集来生成第四数据集,其中,第四数据集包括该部分;通过对第四数据集执行至少一个缩小操作以便减小第四数据集的大小来生成第五数据集;将第五数据集提供给第一网络服务器;以及将第三数据集和第五数据集提供给第二网络服务器。

示例a17可以包括示例a16的主题,并且可以进一步指定以单个文件将第三数据集和第五数据集提供给第一网络服务器。

示例a18可以包括示例a17的主题,并且可以进一步指定单个文件是单个头文件。

示例a19可以包括示例a13-18中任一项的主题,并且可以进一步指定第一数据集包括至少一个图像文件,并且其中,指令使得计算设备,作为生成第三数据集的部分,用于利用至少一个图像文件的内联表示来替换至少一个图像文件。

示例a20可以包括示例a13-19的主题,并且可以进一步指定第一数据集包括代码注释,并且其中,第三逻辑作为生成第三数据集的部分,用于移除代码注释。

示例a21可以包括示例a13-28中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与第三计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a22可以包括示例a13-21中任一项的主题,并且可以进一步指定:网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a23可以包括示例a13-22中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a24可以包括示例a13-23中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在第二计算设备与第三计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到第三计算设备。

示例a25是一种计算设备,包括:用于接收表示网页的第一数据集的模块,并且可以进一步指定第一数据集包括与不受用于提供网页的网络服务器的平台支持的平台特征相关联的部分;用于通过从第一数据集中移除该部分来生成第二数据集的模块;用于通过对第二数据集执行至少一个缩小操作以便减小第二数据集的大小来生成第三数据集的模块;以及用于将第三数据集提供给网络服务器的模块,其中,网络服务器响应于由第二计算设备向网络服务器请求网页而将第三数据集提供给第二计算设备。

示例a26可以包括示例a25的主题,并且可以进一步指定用于生成第二数据集的模块包括:用于接收平台的指示符的模块;以及用于通过访问平台与平台所支持的平台特征之间的所存储的关联性来确定该平台特征不受平台支持的模块。

示例a27可以包括示例a26的主题,并且可以进一步指定用于生成第二数据集的模块包括:用于在第一数据集中识别与平台特征相关联的标签的模块;以及用于基于标签来识别该部分的模块。

示例a28可以包括示例a25-27中任一项的主题,并且可以进一步指定:平台是第一平台;网络服务器是第一网络服务器;以及平台特征是受用于提供网页的第二网络服务器的第二平台支持的;用于生成第二数据集的模块包括用于基于第一数据集来生成第四数据集的模块,其中,第四数据集包括该部分;用于生成第三数据集的模块包括用于通过对第四数据集执行至少一个缩小操作以便减小第四数据集的大小来生成第五数据集的模块;以及用于将第三数据集提供给网络服务器的模块包括:用于将第三数据集和第五数据集提供给第一网络服务器的模块,以及用于将第三数据集和第五数据集提供给第二网络服务器的模块。

示例a29可以包括示例a28的主题,并且可以进一步指定用于将第三数据集提供给网络服务器的模块包括用于以单个文件将第三数据集和第五数据集提供给第一网络服务器的模块。

示例a30可以包括示例a29的主题,并且可以进一步指定单个文件是单个头文件。

示例a31可以包括示例a25-30中任一项的主题,并且可以进一步指定第一数据集包括至少一个图像文件,并且用于生成第三数据集的模块包括用于利用至少一个图像文件的内联表示来替换至少一个图像文件的模块。

示例a32可以包括示例a25-31中任一项的主题,并且可以进一步指定第一数据集包括代码注释,并且其中,用于生成第三数据集的模块包括用于移除代码注释的模块。

示例a33可以包括示例a25-32中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与第三计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a34可以包括示例a25-33中任一项的主题,并且可以进一步指定:网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a35可以包括示例a25-34中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a36可以包括示例a25-35中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在第二计算设备与第三计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到第三计算设备。

示例a37是一种用于网络通信的方法,包括:由计算设备接收表示网页的第一数据集,并且可以进一步指定该第一数据集包括与不受用于提供网页的网络服务器的平台支持的平台特征相关联的部分;由计算设备通过从第一数据集中移除该部分来生成第二数据集;由计算设备通过对第二数据集执行至少一个缩小操作以便减小第二数据集的大小来生成第三数据集;以及由计算设备将第三数据集提供给网络服务器,其中,网络服务器响应于由第二计算设备向网络服务器请求网页而将第三数据集提供给第二计算设备。

示例a38可以包括示例a37的主题,并且还可以包括:由计算设备接收平台的指示符;以及通过访问平台与平台所支持的平台特征之间的所存储的关联性来确定该平台特征是不受平台支持的。

示例a39可以包括示例a38的主题,并且还可以包括,作为生成第二数据集的部分:在第一数据集中识别与平台特征相关联的标签;以及基于标签来识别该部分。

示例a40可以包括示例a37-39中任一项的主题,并且可以进一步指定:平台是第一平台,网络服务器是第一网络服务器,以及平台特征是受用于提供网页的第二网络服务器的第二平台支持的,并且还可以包括:由计算设备基于第一数据集来生成第四数据集,其中,第四数据集包括该部分;由计算设备通过对第四数据集执行至少一个缩小操作以便减小第四数据集的大小来生成第五数据集;由计算设备将第五数据集提供给第一网络服务器;以及由计算设备将第三数据集和第五数据集提供给第二网络服务器。

示例a41可以包括示例a40的主题,并且可以进一步指定以单个文件将第三数据集和第五数据集提供给第一网络服务器。

示例a42可以包括示例a41的主题,并且可以进一步指定单个文件是单个头文件。

示例a43可以包括示例a37-42中任一项的主题,并且可以进一步指定第一数据集包括至少一个图像文件,并且还包括,作为生成第三数据集的部分,利用至少一个图像文件的内联表示来替换至少一个图像文件。

示例a44可以包括示例a37-43中任一项的主题,并且可以进一步指定:第一数据集包括代码注释,并且还包括,作为生成第三数据集的部分,移除代码注释。

示例a45可以包括示例a37-44中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与第三计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a46可以包括示例a37-45中任一项的主题,并且可以进一步指定:网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a47可以包括示例a37-46中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a48可以包括示例a37-47中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在第二计算设备与第三计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到第三计算设备。

示例a49是一种网络服务器,包括:存储设备,其用于存储对应的多个平台的多个标识符;第一逻辑,其用于从计算设备接收对超文本标记语言(html)网页的请求;第二逻辑,其用于从所存储的多个标识符中选择网络服务器的平台的标识符;第三逻辑,其耦合到第一逻辑,用于至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及第四逻辑,其耦合到第二逻辑,用于响应于请求而将压缩数据集提供给计算设备,其中,计算设备的网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例a50可以包括示例a49的主题,并且可以进一步指定压缩数据集是gzip数据。

示例a51可以包括示例a49-50中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)文件,其包括图像的内联表示。

示例a52可以包括示例a49-51中任一项的主题,并且可以进一步指定:当接收到请求时,压缩数据集存储在网络服务器的随机存取存储器(ram)中。

示例a53可以包括示例a49-52中任一项的主题,并且可以进一步指定:压缩数据集在被解压缩时是没有回车的超文本标记语言(html)文件。

示例a54可以包括示例a49-53中任一项的主题,并且可以进一步指定压缩数据集存储在头文件中。

示例a55可以包括示例a49-54中任一项的主题,并且可以进一步指定压缩数据集被存储为变量。

示例a56可以包括示例a49-55中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)代码的十六进制编码。

示例a57可以包括示例a49-56中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a58可以包括示例a49-57中任一项的主题,并且可以进一步指定:网页包括用于浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a59可以包括示例a49-58中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a60可以包括示例a49-59中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例a61是一种或多种计算机可读介质,其上具有指令,该指令响应于由网络服务器的一个或多个处理设备执行而使得网络服务器:存储对应的多个平台的多个标识符;从计算设备接收对超文本标记语言(html)网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给计算设备,其中,计算设备的网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例a62可以包括示例a61的主题,并且可以进一步指定压缩数据集是gzip数据。

示例a63可以包括示例a61-62中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)文件,其包括图像的内联表示。

示例a64可以包括示例a61-63中任一项的主题,并且可以进一步指定:当接收到请求时,压缩数据集存储在网络服务器的随机存取存储器(ram)中。

示例a65可以包括示例a61-64中任一项的主题,并且可以进一步指定:压缩数据集在被解压缩时是没有回车的超文本标记语言(html)文件。

示例a66可以包括示例a61-65中任一项的主题,并且可以进一步指定压缩数据集存储在头文件中。

示例a67可以包括示例a61-66中任一项的主题,并且可以进一步指定压缩数据集被存储为变量。

示例a68可以包括示例a61-67中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)代码的十六进制编码。

示例a69可以包括示例a61-68中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a70可以包括示例a61-69中任一项的主题,并且可以进一步指定:网页包括用于浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a71可以包括示例a61-70中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a72可以包括示例a61-71中任一项的主题,并且可以进一步指定网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例a73是一种网络服务器,包括:存储设备,其用于存储对应的多个平台的多个标识符;用于从计算设备接收对超文本标记语言(html)网页的请求的模块;用于从所存储的多个标识符中选择网络服务器的平台的标识符的模块;用于至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集的模块;以及用于响应于请求而将压缩数据集提供给计算设备的模块,其中,计算设备的网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例a74可以包括示例a73的主题,并且可以进一步指定压缩数据集是gzip数据。

示例a75可以包括示例a73-74中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)文件,其包括图像的内联表示。

示例a76可以包括示例a73-75中任一项的主题,并且可以进一步指定:当接收到请求时,压缩数据集存储在网络服务器的随机存取存储器(ram)中。

示例a77可以包括示例a73-76中任一项的主题,并且可以进一步指定:压缩数据集在被解压缩时是没有回车的超文本标记语言(html)文件。

示例a78可以包括示例a73-77中任一项的主题,并且可以进一步指定压缩数据集存储在头文件中。

示例a79可以包括示例a73-78中任一项的主题,并且可以进一步指定压缩数据集被存储为变量。

示例a80可以包括示例a73-79中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)代码的十六进制编码。

示例a81可以包括示例a73-80中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a82可以包括示例a73-81中任一项的主题,并且可以进一步指定:网页包括用于浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a83可以包括示例a73-82中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a84可以包括示例a73-83中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例a85是一种用于网络通信的方法,包括:由网络服务器存储对应的多个平台的多个标识符;在网络服务器处从计算设备接收对超文本标记语言(html)网页的请求;由网络服务器从所存储的多个标识符中选择网络服务器的平台的标识符;由网络服务器至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及由网络服务器响应于请求而将压缩数据集提供给计算设备,其中,计算设备的网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例a86可以包括示例a85的主题,并且可以进一步指定压缩数据集是gzip数据。

示例a87可以包括示例a85-86中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)文件,其包括图像的内联表示。

示例a88可以包括示例a85-87中任一项的主题,并且可以进一步指定:当接收到请求时,压缩数据集存储在网络服务器的随机存取存储器(ram)中。

示例a89可以包括示例a85-88中任一项的主题,并且可以进一步指定:压缩数据集在被解压缩时是没有回车的超文本标记语言(html)文件。

示例a90可以包括示例a85-89中任一项的主题,并且可以进一步指定压缩数据集存储在头文件中。

示例a91可以包括示例a85-90中任一项的主题,并且可以进一步指定压缩数据集被存储为变量。

示例a92可以包括示例a85-91中任一项的主题,并且可以进一步指定压缩数据集在被解压缩时是超文本标记语言(html)代码的十六进制编码。

示例a93可以包括示例a85-92中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例a94可以包括示例a85-93中任一项的主题,并且可以进一步指定:网页包括用于浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例a95可以包括示例a85-94中任一项的主题,并且可以进一步指定:网页包括用于在第二计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例a96可以包括示例a85-95中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例a97是一种或多种计算可读介质,其上具有指令,该指令响应于由计算设备的一个或多个处理设备执行而使得计算设备执行示例a37-48和a85-96中任一项的方法。

示例a98是一种装置,包括用于执行示例a37-48和a85-96中任一项的方法的模块。

示例b1是一种中继服务器,包括:网络端口;第一逻辑,其耦合到网络端口,用于确定从网络浏览器传入到网络端口的数据是使用中继穿透网络地址转换器(turn)数据还是超文本传输协议(http)数据;第二逻辑,其耦合到第一逻辑,用于响应于确定传入数据是turn数据而对数据进行处理;以及第三逻辑,其耦合到第一逻辑,用于响应于确定传入数据是http数据而对数据进行处理。

示例b2可以包括示例b1的主题,并且可以进一步指定:第一逻辑用于通过分析初始接收到的数据的一个或多个字节来确定传入数据是turn数据还是http数据。

示例b3可以包括示例b1-2中任一项的主题,并且可以进一步指定:当传入数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,第三逻辑用于生成响应以用于提供给网络浏览器,其中,响应包括网络浏览器的互联网协议地址。

示例b4可以包括示例b1-3中任一项的主题,并且可以进一步指定:当传入数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,第三逻辑用于生成响应以用于提供给网络浏览器,其中,响应包括网络浏览器将指定数量的ajax查询发送到中继服务器的指令。

示例b5可以包括示例b4的主题,并且可以进一步指定:响应还包括指定数量的ajax查询中的每一个ajax查询的序列号。

示例b6可以包括示例b4-5中任一项的主题,并且可以进一步指定:第三逻辑还用于至少部分地基于网络浏览器对指令的响应来计算网络浏览器与中继服务器之间的通信的时延。

示例b7可以包括示例b4-6中任一项的主题,并且还可以包括:存储设备,其具有数据结构,用于存储表示网络浏览器与中继服务器之间的所测量的时延的数据,其中,所测量的时延至少部分地基于网络浏览器与网络端口之间的通信。

示例b8可以包括示例b1-7中任一项的主题,并且可以进一步指定中继服务器是以星形配置或网格配置布置的多个中继服务器中的一个。

示例b9可以包括示例b1-8中任一项的主题,并且可以进一步指定中继服务器促进与网络服务器相关联的计算设备与多个其它计算设备之间的网络实时通信(webrtc)连接。

示例b10是一种或多种计算机可读介质,其上具有指令,该指令响应于由中继服务器的一个或多个处理设备执行而使得中继服务器:确定从网络浏览器传入到中继服务器的网络端口的数据是使用中继穿透网络地址转换器(turn)数据还是超文本传输协议(http)数据;响应于确定传入数据是turn数据而根据turn协议对数据进行处理;以及响应于确定传入数据是http数据而根据http协议对数据进行处理。

示例b11可以包括示例b10的主题,并且可以进一步指定:作为确定传入数据是turn数据还是http数据的部分,指令使得中继服务器分析初始接收到的数据的一个或多个字节。

示例b12可以包括示例b10-11中任一项的主题,并且可以进一步指定:当传入数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,指令使得中继服务器生成响应以用于提供给网络浏览器,并且还进一步指定响应包括网络浏览器的互联网协议地址。

示例b13可以包括示例b10-12中任一项的主题,并且可以进一步指定:当传入数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,指令使得中继服务器生成响应以用于提供给网络浏览器,其中,响应包括网络浏览器将指定数量的ajax查询发送到中继服务器的指令。

示例b14可以包括示例b13的主题,并且可以进一步指定:响应还包括指定数量的ajax查询中的每一个ajax查询的序列号。

示例b15可以包括示例b13-14中任一项的主题,并且可以进一步指定:指令还使得中继服务器至少部分地基于网络浏览器对指令的响应来计算网络浏览器与中继服务器之间的通信的时延。

示例b16可以包括示例b13-15中任一项的主题,并且可以进一步指定:指令还使得中继服务器:将表示网络浏览器与中继服务器之间的所测量的时延的数据存储在存储设备的数据结构中,其中,所测量的时延至少部分地基于网络浏览器与网络端口之间的通信。

示例b17可以包括示例b10-16中任一项的主题,并且可以进一步指定中继服务器是以星形配置或网格配置布置的多个中继服务器中的一个。

示例b18可以包括示例b10-17中的任一项的主题,并且可以进一步指定指令还使得中继服务器:促进与网络服务器相关联的计算设备与多个其它计算设备之间的网络实时通信(webrtc)连接。

示例b19是一种中继服务器,包括:网络端口;用于确定从网络浏览器传入到网络端口的数据是使用中继穿透网络地址转换器(turn)数据还是超文本传输协议(http)数据的模块;用于响应于确定传入数据是turn数据而对数据进行处理的模块;以及用于响应于确定传入数据是http数据而对数据进行处理的模块。

示例b20可以包括示例b19的主题,并且可以进一步指定:用于确定的模块用于通过分析初始接收到的数据的一个或多个字节来确定传入数据是turn数据还是http数据。

示例b21可以包括示例b19-20中任一项的主题,并且可以进一步指定:当传入数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,用于响应于确定传入数据是http数据而对数据进行处理的模块用于生成响应以用于提供给网络浏览器,其中,响应包括网络浏览器的互联网协议地址。

示例b22可以包括示例b19-21中任一项的主题,并且可以进一步指定:当传入数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,用于响应于确定传入数据是http数据而对数据进行处理的模块用于生成响应以用于提供给网络浏览器,其中响应包括网络浏览器将指定数量的ajax查询发送到中继服务器的指令。

示例b23可以包括示例b22的主题,并且可以进一步指定:响应还包括指定数量的ajax查询中的每一个ajax查询的序列号。

示例b24可以包括示例b22-23中任一项的主题,并且可以进一步指定:用于响应于确定传入数据是http数据而对数据进行处理的模块还用于至少部分地基于网络浏览器对指令的响应来计算网络浏览器与中继服务器之间的通信的时延。

示例b25可以包括示例b22-24中任一项的主题,并且还可以包括:存储设备,其具有数据结构,用于存储表示网络浏览器与中继服务器之间的所测量的时延的数据,其中,所测量的时延至少部分地基于网络浏览器与网络端口之间的通信。

示例b26可以包括示例b19-25中任一项的主题,并且可以进一步指定中继服务器是以星形配置或网格配置布置的多个中继服务器中的一个。

示例b27可以包括示例b19-26中的任一项的主题,并且可以进一步指定中继服务器促进与网络服务器相关联的计算设备与多个其它计算设备之间的网络实时通信(webrtc)连接。

示例b28是一种用于网络通信的方法,包括:由中继服务器确定从网络浏览器传入到中继服务器的网络端口的第一数据是使用中继穿透网络地址转换器(turn)数据还是超文本传输协议(http)数据;由中继服务器响应于确定第一数据是turn数据而根据turn协议对第一数据进行处理;由中继服务器确定从网络浏览器传入到中继服务器的网络端口的第二数据是turn数据还是http数据;以及由中继服务器响应于确定第二数据是http数据而根据http协议对第二数据进行处理。

示例b29可以包括示例b28的主题,并且可以进一步指定,该方法包括,作为确定第二数据是turn数据还是http数据的部分,分析初始接收到的数据的一个或多个字节。

示例b30可以包括示例b28-29中任一项的主题,并且还可以包括:当第二数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,由中继服务器生成响应以用于提供给网络浏览器,其中,响应包括网络浏览器的互联网协议地址。

示例b31可以包括示例b28-30中任一项的主题,并且还可以包括:当传入数据是预先确定的http数据异步javascript和可扩展标记语言(ajax)查询时,由中继服务器生成响应以用于提供给网络浏览器,其中,响应包括网络浏览器将指定数量的ajax查询发送到中继服务器的指令。

示例b32可以包括示例b31的主题,并且可以进一步指定:响应还包括指定数量的ajax查询中的每一个ajax查询的序列号。

示例b33可以包括示例b31-32中任一项的主题,并且还可以包括:由中继服务器至少部分地基于网络浏览器对指令的响应来计算网络浏览器与中继服务器之间的通信的时延。

示例b34可以包括示例b31-33中任一项的主题,并且还可以包括:由中继服务器将表示网络浏览器与中继服务器之间的所测量的时延的数据存储在存储设备的数据结构中,其中,所测量的时延至少部分地基于网络浏览器与网络端口之间的通信。

示例b35可以包括示例b28-34中任一项的主题,并且可以进一步指定中继服务器是以星形配置或网格配置布置的多个中继服务器中的一个。

示例b36可以包括示例b28-35中的任一项的主题,并且还可以包括:由中继服务器促进与网络服务器相关联的计算设备与多个其它计算设备之间的网络实时通信(webrtc)连接。

示例b37是一种计算设备,包括:第一逻辑,其用于接收来自网络服务器的网页,其中,网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;第二逻辑,其与第一逻辑耦合,用于在网络端口上执行至少一个ajax查询;第三逻辑,用于从中继服务器接收对至少一个ajax查询的对应的至少一个响应;以及第四逻辑,其与第三逻辑耦合,用于生成时延数据以用于提供给网络服务器,其中,时延数据至少部分地基于至少一个响应。

示例b38可以包括示例b37的主题,并且可以进一步指定:网络服务器用于将时延数据存储在存储设备中,以用于选择用于计算设备与另一计算设备之间的网络实时通信(webrtc)通信的turn服务器。

示例b39可以包括示例b37-38中任一项的主题,并且可以进一步指定:至少一个ajax查询包括多个ajax查询,至少一个响应包括对应的多个响应,并且第四逻辑用于通过计算对于多个ajax查询的平均响应时间来生成时延数据。

示例b40可以包括示例b37-39中任一项的主题,并且可以进一步指定:至少一个响应包括计算设备将指定数量的后续ajax查询发送到中继服务器的指令,以及指定数量的ajax查询中的每个ajax查询的序列号。

示例b41可以包括示例b40的主题,并且可以进一步指定:第四逻辑用于通过接收来自中继服务器的中继服务器时延数据并对中继服务器时延数据中的至少一些进行格式化以用于提供给网络服务器来生成时延数据,并且其中,中继服务器基于后续ajax查询来生成中继服务器时延数据。

示例b42可以包括示例b37-41中任一项的主题,并且还可以包括:第五逻辑,用于经由中继服务器在计算设备与另一计算设备之间建立网络实时通信(webrtc)通信。

示例b43可以包括示例b37-42中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b44可以包括示例b37-43中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b45可以包括示例b37-44中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例b46是一种或多种计算机可读介质,其上具有指令,该指令响应于由计算设备的一个或多个处理设备执行而使得计算设备:接收来自网络服务器的网页,其中,网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;在网络端口上执行至少一个ajax查询;从中继服务器接收对至少一个ajax查询的对应的至少一个响应;以及生成时延数据以用于提供给网络服务器,其中,时延数据至少部分地基于至少一个响应。

示例b47可以包括示例b46的主题,并且可以进一步指定:网络服务器用于将时延数据存储在存储设备中,以用于选择用于计算设备与另一计算设备之间的网络实时通信(webrtc)通信的turn服务器。

示例b48可以包括示例b46-47中任一项的主题,并且可以进一步指定:至少一个ajax查询包括多个ajax查询,至少一个响应包括对应的多个响应,并且作为生成时延数据的部分,指令使得计算设备计算对于多个ajax查询的平均响应时间。

示例b49可以包括示例b46-48中任一项的主题,并且可以进一步指定:至少一个响应包括计算设备将指定数量的后续ajax查询发送到中继服务器的指令,以及指定数量的ajax查询中的每个ajax查询的序列号。

示例b50可以包括示例b49的主题,并且可以进一步指定:作为生成时延数据的部分,指令使得计算设备接受来自中继服务器的中继服务器时延数据并对中继服务器时延数据中的至少一些进行格式化以用于提供给网络服务器来生成时延数据,并且其中,中继服务器基于后续ajax查询来生成中继服务器时延数据。

示例b51可以包括示例b46-50中任一项的主题,并且可以进一步指定指令还使得计算设备:经由中继服务器在计算设备与另一计算设备之间建立网络实时通信(webrtc)通信。

示例b52可以包括示例b46-51中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b53可以包括示例b46-52中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b54可以包括示例b46-53中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例b55是一种计算设备,包括:用于接收来自网络服务器的网页的模块,其中,网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;用于在网络端口上执行至少一个ajax查询的模块;用于从中继服务器接收对至少一个ajax查询的对应的至少一个响应的模块;以及用于生成时延数据以用于提供给网络服务器的模块,其中,时延数据至少部分地基于至少一个响应。

示例b56可以包括示例b55的主题,并且可以进一步指定:网络服务器用于将时延数据存储在存储设备中,以用于选择用于计算设备与另一计算设备之间的网络实时通信(webrtc)通信的turn服务器。

示例b57可以包括示例b55-56中任一项的主题,并且可以进一步指定:至少一个ajax查询包括多个ajax查询,至少一个响应包括对应的多个响应,并且作为生成时延数据的部分,用于生成的模块用于计算对于多个ajax查询的平均响应时间。

示例b58可以包括示例b55-57中任一项的主题,并且可以进一步指定:至少一个响应包括计算设备将指定数量的后续ajax查询发送到中继服务器的指令,以及指定数量的ajax查询中的每个ajax查询的序列号。

示例b59可以包括示例b58的主题,并且可以进一步指定:作为生成时延数据的部分,用于生成的模块用于接受来自中继服务器的中继服务器时延数据并对中继服务器时延数据中的至少一些进行格式化以用于提供给网络服务器,并且其中,中继服务器基于后续ajax查询来生成中继服务器时延数据。

示例b60可以包括示例b55-59中任一项的主题,并且还可以包括:用于经由中继服务器在计算设备与另一计算设备之间建立网络实时通信(webrtc)通信的模块。

示例b61可以包括示例b55-60中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b62可以包括示例b55-61中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b63可以包括示例b55-62中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例b64是一种用于网络通信的方法,包括:由计算设备接收来自网络服务器的网页,其中,网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;由计算设备在中继服务器的网络端口上执行至少一个ajax查询;由计算设备从中继服务器接收对至少一个ajax查询的对应的至少一个响应;以及由计算设备生成时延数据以用于提供给网络服务器,其中,时延数据至少部分地基于至少一个响应。

示例b65可以包括示例b64的主题,并且可以进一步指定:网络服务器用于将时延数据存储在存储设备中,以用于选择用于计算设备与另一计算设备之间的网络实时通信(webrtc)通信的turn服务器。

示例b66可以包括示例b64-65中任一项的主题,并且可以进一步指定:至少一个ajax查询包括多个ajax查询,至少一个响应包括对应的多个响应,并且该方法包括,作为生成时延数据的部分,计算对于多个ajax查询的平均响应时间。

示例b67可以包括示例b64-66中任一项的主题,并且可以进一步指定:至少一个响应包括计算设备将指定数量的后续ajax查询发送到中继服务器的指令,以及指定数量的ajax查询中的每个ajax查询的序列号。

示例b68可以包括示例b67的主题,并且可以进一步指定该方法还包括,作为生成时延数据的部分,接受来自中继服务器的中继服务器时延数据并对中继服务器时延数据中的至少一些进行格式化以用于提供给网络服务器,并且其中,中继服务器基于后续ajax查询来生成中继服务器时延数据。

示例b69可以包括示例b64-68中任一项的主题,并且还可以包括:由计算设备经由中继服务器在计算设备与另一计算设备之间建立网络实时通信(webrtc)通信。

示例b70可以包括示例b64-69中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b71可以包括示例b64-70中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b72可以包括示例b64-71中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与另一计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到另一计算设备。

示例b73是一种网络服务器,包括:第一逻辑,用于将网页提供给计算设备的浏览器,其中,网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;以及第二逻辑,其与第一逻辑耦合,用于从网络浏览器接收表示浏览器与中继服务器之间的时延的数据,其中,数据至少部分地基于由网络浏览器执行指令。

示例b74可以包括示例b73的主题,并且还可以包括:存储设备,其与第二逻辑耦合,具有数据结构,用于存储表示网络服务器与中继服务器之间的时延的数据。

示例b75可以包括示例b74的主题,并且还可以包括:第三逻辑,其与存储设备耦合,用于将中继服务器的指示符提供给网络浏览器,作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b76可以包括示例b74-75中任一项的主题,并且可以进一步指定:中继服务器是第一中继服务器,并且数据结构还用于存储表示网络浏览器与不同于第一中继服务器的第二中继服务器之间的时延的数据。

示例b77可以包括示例b76的主题,并且还可以包括:第三逻辑,其与存储设备耦合,用于基于表示时延的所存储的数据来从第一中继服务器和第二中继服务器中选择中继服务器;以及第四逻辑,其与第三逻辑耦合,用于将所选择的中继服务器的指示符提供给网络浏览器,作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b78可以包括示例b76-77中任一项的主题,并且可以进一步指定,网络浏览器是第一网络浏览器,并且可以进一步指定网络服务器还包括:第三逻辑,其与存储设备耦合,以确定第二网络浏览器与第一网络浏览器在同一子网中;第四逻辑,其与存储设备耦合,用于基于表示第一网络浏览器与第一中继服务器和第二中继服务器之间的时延的所存储的数据,来从第一中继服务器和第二中继服务器中选择中继服务器;以及第五逻辑,其与第四逻辑耦合,用于将所选择的中继服务器的指示符提供给网络浏览器,作为用于在第二网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b79可以包括示例b74-78中任一项的主题,并且还可以包括:第三逻辑,用于将表示网络浏览器与中继服务器之间的时延的数据提供给中继服务器。

示例b80可以包括示例b73-79中任一项的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且可以进一步指定第一逻辑作为将网页提供给网络服务器的部分用于:存储对应的多个平台的多个标识符;接收针对网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例b81可以包括示例b73-80中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b82可以包括示例b73-81中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b83可以包括示例b73-82中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到计算设备。

示例b84是一种或多种计算机可读介质,其上具有指令,该指令响应于由网络服务器的一个或多个处理设备执行而使得网络服务器:将网页提供给计算设备的网络浏览器,其中,网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;以及从网络浏览器接收表示网络浏览器与中继服务器之间的时延的数据,其中,数据至少部分地基于由网络浏览器执行指令。

示例b85可以包括示例b84的主题,并且可以进一步指定指令还使得网络服务器:将表示网络服务器与中继服务器之间的时延的数据存储在存储设备中。

示例b86可以包括示例b85的主题,并且可以进一步指定指令还使得网络服务器:将中继服务器的指示符提供给网络浏览器,作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b87可以包括示例b85-86中任一项的主题,并且可以进一步指定:中继服务器是第一中继服务器,并且其中,指令还使得网络服务器存储表示网络浏览器与不同于第一中继服务器的第二中继服务器之间的时延的数据。

示例b88可以包括示例b87的主题,并且可以进一步指定指令还使得网络服务器:基于表示时延的所存储的数据来从第一中继服务器和第二中继服务器中选择中继服务器;以及将所选择的中继服务器的指示符提供给网络浏览器,作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b89可以包括示例b87-88中任一项的主题,并且可以进一步指定,网络浏览器是第一网络浏览器,并且其中,指令还使得网络服务器:确定第二网络浏览器与第一网络浏览器在同一子网中;基于表示第一网络浏览器与第一中继服务器和第二中继服务器之间的时延的所存储的数据,来从第一中继服务器和第二中继服务器中选择中继服务器;以及将所选择的中继服务器的指示符提供给网络浏览器,作为用于在第二网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b90可以包括示例b85-89中任一项的主题,并且可以进一步指定指令还使得网络服务器:将表示网络浏览器与中继服务器之间的时延的数据提供给中继服务器。

示例b91可以包括示例b84-90中任一项的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且可以进一步指定,作为将网页提供给网络服务器的部分,指令还使得网络服务器:存储对应的多个平台的多个标识符;接收针对网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例b92可以包括示例b84-91中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b93可以包括示例b84-92中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b94可以包括示例b84-93中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到计算设备。

示例b95是一种网络服务器,包括:用于将网页提供给计算设备的网络浏览器的模块,其中,网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;以及用于从网络浏览器接收表示网络浏览器与中继服务器之间的时延的数据的模块,并且可以进一步指定数据至少部分地基于由网络浏览器执行指令。

示例b96可以包括示例b95的主题,并且还可以包括:存储设备,其与用于接收的模块耦合,其具有数据结构,用于存储表示网络服务器与中继服务器之间的时延的数据。

示例b97可以包括示例b96的主题,并且还可以包括:用于将中继服务器的指示符提供给网络浏览器作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器的模块。

示例b98可以包括示例b96-97中任一项的主题,并且可以进一步指定:中继服务器是第一中继服务器,并且其中,数据结构还用于存储表示网络浏览器与不同于第一中继服务器的第二中继服务器之间的时延的数据。

示例b99可以包括示例b98的主题,并且还可以包括:用于基于表示时延的所存储的数据来从第一中继服务器和第二中继服务器中选择中继服务器的模块;以及用于将所选择的中继服务器的指示符提供给网络浏览器作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器的模块。

示例b100可以包括示例b98-99中任一项的主题,并且可以进一步指定,网络浏览器是第一网络浏览器,并且其中,网络服务器还包括:用于确定第二网络浏览器与第一网络浏览器在同一子网中的模块;用于基于表示第一网络浏览器与第一中继服务器和第二中继服务器之间的时延的所存储的数据,从第一中继服务器和第二中继服务器中选择中继服务器的模块;以及用于将所选择的中继服务器的指示符提供给网络浏览器作为在第二网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器的模块。

示例b101可以包括示例b96-100中任一项的主题,并且还可以包括:用于将表示网络浏览器与中继服务器之间的时延的数据提供给中继服务器的模块。

示例b102可以包括示例b95-101中任一项的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且可以进一步指定用于将网页提供给计算设备的网络浏览器的模块,作为将网页提供给网络服务器的部分:存储对应的多个平台的多个标识符;接收针对网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例b103可以包括示例b95-102中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b104可以包括示例b95-103中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b105可以包括示例b95-104中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到计算设备。

示例b106是一种用于网络通信的方法,包括:由网络服务器将网页提供给计算设备的网络浏览器,其中,网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者;以及由网络服务器从网络浏览器接收表示网络浏览器与中继服务器之间的时延的数据,并且可以进一步指定数据至少部分地基于由网络浏览器执行指令。

示例b107可以包括示例b106的主题,并且还可以包括:由网络服务器将表示网络服务器与中继服务器之间的时延的数据存储在存储设备中。

示例b108可以包括示例b107的主题,并且还可以包括:由网络服务器将中继服务器的指示符提供给网络浏览器,作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b109可以包括示例b107-108中任一项的主题,并且可以进一步指定:中继服务器是第一中继服务器,并且存储设备还用于存储表示网络浏览器与不同于第一中继服务器的第二中继服务器之间的时延的数据。

示例b110可以包括示例b109的主题,并且还可以包括:由网络服务器基于表示时延的所存储的数据来从第一中继服务器和第二中继服务器中选择中继服务器;以及由网络服务器将所选择的中继服务器的指示符提供给网络浏览器,作为用于在网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b111可以包括示例b109-110中任一项的主题,并且可以进一步指定网络浏览器是第一网络浏览器,并且该方法还包括:由网络服务器确定第二网络浏览器与第一网络浏览器在同一子网中;由网络服务器基于表示第一网络浏览器与第一中继服务器和第二中继服务器之间的时延的所存储的数据,从第一中继服务器和第二中继服务器中选择中继服务器;以及由网络服务器将所选择的中继服务器的指示符提供给网络浏览器,作为在第二网络浏览器与另一计算设备之间建立网络实时通信(webrtc)通信的候选turn服务器。

示例b112可以包括示例b107-111中任一项的主题,并且还可以包括:由网络服务器将表示网络浏览器与中继服务器之间的时延的数据提供给中继服务器。

示例b113可以包括示例b106-112中任一项的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且可以进一步指定方法还包括:由网络服务器存储对应的多个平台的多个标识符;由网络服务器接收针对网页的请求;由网络服务器从所存储的多个标识符中选择网络服务器的平台的标识符;由网络服务器至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及由网络服务器响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例b114可以包括示例b106-113中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由中继服务器促进的;以及中继服务器是以星形配置或网格配置布置的多个使用中继穿透网络地址转换器(turn)服务器中的一个。

示例b115可以包括示例b106-114中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例b116可以包括示例b106-115中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码,并且其中,网络服务器用于将对应的提议发送到计算设备。

示例b117是一种或多种计算可读介质,其上具有指令,该指令响应于由计算设备的一个或多个处理设备执行而使得计算设备执行示例b28-36、b64-72、以及b106-110中任一项的方法。

示例b118是一种装置,包括用于执行示例b28-36、b64-72、以及b106-110中任一项的方法的模块。

示例c1是一种计算设备,包括:第一逻辑,用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与第二计算设备之间建立webrtc通信;第二逻辑,其与第一逻辑耦合,用于将webrtc提议从第一格式变换为二进制块;以及第三逻辑,其与第二逻辑耦合,用于将二进制块提供给网络服务器,其中,网络服务器用于将对应的提议发送到第二计算设备。

示例c2可以包括示例c1的主题,并且可以进一步指定第一格式是会话描述协议(sdp)格式。

示例c3可以包括示例c1-2中任一项的主题,并且可以进一步指定第二逻辑使用javascript变换器将以第一格式的webrtc提议变换为二进制块。

示例c4包括示例c1-3中任一项的主题,并且可以进一步指定第三逻辑使用websocket协议将二进制块提供给网络服务器。

示例c5可以包括示例c1-4中任一项的主题,并且还可以包括:第四逻辑,用于接收来自网络服务器的应答,其中,应答是以二进制格式的,并且由网络服务器响应于接收到来自第二计算设备的应答而提供给计算设备;以及第五逻辑,用于将响应从二进制格式变换为会话描述协议(sdp)格式。

示例c6可以包括示例c1-5中任一项的主题,并且可以进一步指定二进制块的大小小于以第一格式的webrtc提议的大小。

示例c7可以包括示例c1-6中任一项的主题,并且还可以包括:第四逻辑,用于接收来自网络服务器的网页。

示例c8可以包括示例c7的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例c9可以包括示例c7-8中任一项的主题,并且可以进一步指定:网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c10可以包括示例c7-9中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c11可以包括示例c1-10中任一项的主题,并且可以进一步指定用于在计算设备与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议是用于在计算设备的网络浏览器与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议。

示例c12是一种或多种计算机可读介质,其上具有指令,该指令响应于由计算设备的一个或多个处理设备执行而使得计算设备:以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与第二计算设备之间建立webrtc通信;将webrtc提议从第一格式变换为二进制块;以及将二进制块提供给网络服务器,其中,网络服务器用于将对应的提议发送到第二计算设备。

示例c13可以包括示例c12的主题,并且可以进一步指定第一格式是会话描述协议(sdp)格式。

示例c14可以包括示例c12-13中任一项的主题,并且可以进一步指定指令使得计算设备使用javascript变换器将以第一格式的webrtc提议变换为二进制块。

示例c15可以包括示例c12-14中任一项的主题,并且可以进一步指定指令使得计算设备使用websocket协议将二进制块提供给网络服务器。

示例c16可以包括示例c12-15中任一项的主题,并且可以进一步指定指令使得计算设备:接收来自网络服务器的应答,其中,应答是以二进制格式的,并且由网络服务器响应于接收到来自第二计算设备的应答而提供给计算设备;以及将响应从二进制格式变换为会话描述协议(sdp)格式。

示例c17可以包括示例c12-16中任一项的主题,并且可以进一步指定二进制块的大小小于以第一格式的webrtc提议的大小。

示例c18可以包括示例c12-17中任一项的主题,并且可以进一步指定指令使得计算设备:接收来自网络服务器的网页。

示例c19可以包括示例c18的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例c20可以包括示例c18-19中任一项的主题,并且可以进一步指定:网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c21可以包括示例c18-20中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c22可以包括示例c12-21中任一项的主题,并且可以进一步指定用于在计算设备与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议是用于在计算设备的网络浏览器与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议。

示例c23是一种计算设备,包括:用于以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与第二计算设备之间建立webrtc通信的模块;用于将webrtc提议从第一格式变换为二进制块的模块;以及用于将二进制块提供给网络服务器的模块,并且可以进一步指定网络服务器用于将对应的提议发送到第二计算设备。

示例c24可以包括示例c23的主题,并且可以进一步指定第一格式是会话描述协议(sdp)格式。

示例c25可以包括示例c23-24中任一项的主题,并且可以进一步指定用于变换的模块使用javascript变换器将以第一格式的webrtc提议变换为二进制块。

示例c26可以包括示例c23-25中任一项的主题,并且可以进一步指定用于提供的模块使用websocket协议将二进制块提供给网络服务器。

示例c27可以包括示例c23-26中任一项的主题,并且还可以包括:用于接收来自网络服务器的应答的模块,其中,应答是以二进制格式的,并且由网络服务器响应于接收到来自第二计算设备的应答而提供给计算设备;以及用于将响应从二进制格式变换为会话描述协议(sdp)格式的模块。

示例c28可以包括示例c23-27中任一项的主题,并且可以进一步指定二进制块的大小小于以第一格式的webrtc提议的大小。

实施例c29可以包括示例c23-28中任一项的主题,并且还可以包括:用于接收来自网络服务器的网页的模块。

示例c30可以包括示例c29的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例c31可以包括示例c29-30中任一项的主题,并且可以进一步指定:网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c32可以包括示例c29-31中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c33可以包括示例c23-32中任一项的主题,并且可以进一步指定用于在计算设备与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议是用于在计算设备的网络浏览器与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议。

示例c34是一种用于网络通信的方法,包括:由计算设备以第一格式生成网络实时通信(webrtc)提议以用于在计算设备与第二计算设备之间建立webrtc通信;由计算设备将webrtc提议从第一格式变换为二进制块;以及由计算设备将二进制块提供给网络服务器,其中,网络服务器用于将对应的提议发送到第二计算设备。

示例c35可以包括示例c34的主题,并且可以进一步指定第一格式是会话描述协议(sdp)格式。

示例c36可以包括示例c34-35中任一项的主题,并且可以进一步指定使用javascript变换器将以第一格式的webrtc提议变换为二进制块。

示例c37包括示例c34-36中任一项的主题,并且可以进一步指定使用websocket协议将二进制块提供给网络服务器。

示例c38可以包括示例c34-37中任一项的主题,并且还可以包括:由计算设备接收来自网络服务器的应答,其中,应答是以二进制格式的,并且由网络服务器响应于接收到来自第二计算设备的应答而提供给第一计算设备;以及由计算设备将响应从二进制格式变换为会话描述协议(sdp)格式。

示例c39可以包括示例c34-38中任一项的主题,并且可以进一步指定二进制块的大小小于以第一格式的webrtc提议的大小。

示例c40可以包括示例c34-39中任一项的主题,并且还可以包括:由计算设备接收来自网络服务器的网页。

示例c41可以包括示例c40的主题,并且可以进一步指定:网页包括用于在计算设备与另一计算设备之间建立网络实时通信(webrtc)连接的代码;webrtc连接是由使用中继穿透网络地址转换器(turn)服务器促进的;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例c42可以包括示例c40-41中任一项的主题,并且可以进一步指定:网页包括用于计算设备在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c43可以包括示例c40-42中任一项的主题,并且可以进一步指定:网页包括用于在计算设备与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c44可以包括示例c34-43中任一项的主题,并且可以进一步指定用于在计算设备与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议是用于在计算设备的网络浏览器与第二计算设备之间建立webrtc通信的以第一格式的webrtc提议。

示例c45是一种网络服务器,包括:第一逻辑,用于接收从网络浏览器到计算设备的网络实时通信(webrtc)提议;第二逻辑,其耦合到第一逻辑,用于将webrtc提议转发到计算设备;第三逻辑,其耦合到第一逻辑,用于将传输控制协议(tcp)消息提供给计算设备,其中,tcp消息包括计算设备将通用数据报协议(udp)消息发送到网络服务器的命令,其中,udp消息包括在tcp消息中;以及第四逻辑,用于基于由计算设备响应于命令发送到网络服务器的udp消息来识别用于计算设备的互联网协议(ip)地址和端口。

示例c46可以包括示例c45的主题,并且还可以包括:第五逻辑,用于响应于由计算设备接收到webrtc提议而接收来自计算设备的webrtc应答;以及第六逻辑,其耦合到第五逻辑,用于将webrtc应答转发到网络浏览器。

示例c47可以包括示例c45-46中任一项的主题,并且还可以包括:第五逻辑,其耦合到第四逻辑,用于将附加的候选信息发送到网络浏览器,并且可以进一步指定附加的候选信息包括用于计算设备的ip地址和端口。

示例c48可以包括示例c45-47中任一项的主题,并且可以进一步地指定第四逻辑用于基于udp消息通过识别用于计算设备的公共地址来识别用于计算设备的ip地址和端口,该公共地址被存储为位于网络服务器与计算设备之间的中间设备中的udp端口映射。

示例c49可以包括示例c48的主题,并且可以进一步指定中间设备是网络地址转换器或代理屏障。

示例c50可以包括示例c45-49中任一项的主题,并且可以进一步指定udp消息包括网络浏览器的标识符。

示例c51可以包括示例c45-50中任一项的主题,并且可以进一步指定udp消息是使用网络服务器已知的秘钥加密的。

示例c52可以包括示例c45-51中任一项的主题,并且还可以包括:第五逻辑,用于将网页提供给网络浏览器。

示例c53可以包括示例c52的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且可以进一步指定第五逻辑用于,作为将网页提供给网络浏览器的部分:存储对应的多个平台的多个标识符;接收针对网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例c54可以包括示例c52-53中任一项的主题,并且可以进一步指定网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c55可以包括示例c52-54中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c56可以包括示例c52-55中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及用于将二进制块提供给网络服务器的代码。

示例c57可以包括示例c45-56中任一项的主题,并且可以进一步指定:webrtc提议与由使用中继穿透网络地址转换器(turn)服务器促进的webrtc连接相关联;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例c58是一种或多种计算机可读介质,其上具有指令,该指令响应于由网络服务器的一个或多个处理设备执行而使得网络服务器:接收从网络浏览器到计算设备的网络实时通信(webrtc)提议;将webrtc提议转发到计算设备;将传输控制协议(tcp)消息提供给计算设备,其中,tcp消息包括计算设备将通用数据报协议(udp)消息发送到网络服务器的命令,其中,udp消息包括在tcp消息中;以及基于由计算设备响应于命令发送到网络服务器的udp消息来识别用于计算设备的互联网协议(ip)地址和端口。

示例c59可以包括示例c58的主题,并且可以进一步指定指令响应于执行还使得网络服务器:响应于由计算设备接收到webrtc提议而接收来自计算设备的webrtc应答;以及将webrtc应答转发到网络浏览器。

示例c60可以包括示例c58-59中任一项的主题,并且可以进一步指定指令响应于执行还使得网络服务器:将附加的候选信息发送到网络浏览器,其中,附加的候选信息包括用于计算设备的ip地址和端口。

示例c61可以包括示例c58-60中任一项的主题,并且可以进一步指定指令响应于执行还使得网络服务器,作为基于udp消息来识别用于计算设备的ip地址和端口的部分:识别被存储为位于网络服务器与计算设备之间的中间设备中udp端口映射的用于计算设备的公共地址。

示例c62可以包括示例c61的主题,并且可以进一步指定中间设备是网络地址转换器或代理屏障。

示例c63可以包括示例c58-62中任一项的主题,并且可以进一步指定udp消息包括网络浏览器的标识符。

示例c64可以包括示例c58-63中任一项的主题,并且可以进一步指定udp消息是使用网络服务器已知的秘钥加密的。

示例c65可以包括示例c58-64中任一项的主题,并且可以进一步指定指令响应于执行还使得网络服务器:将网页提供给网络浏览器。

示例c66可以包括示例c65的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且其中,指令响应于执行还使得网络服务器,作为将网页提供给网络浏览器的部分:存储对应的多个平台的多个标识符;接收针对网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例c67可以包括示例c65-66中任一项的主题,并且可以进一步指定网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c68可以包括示例c65-67中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c69可以包括示例c65-68中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及将二进制块提供给网络服务器的代码。

示例c70可以包括示例c58-69中任一项的主题,并且可以进一步指定:webrtc提议与由使用中继穿透网络地址转换器(turn)服务器促进的webrtc连接相关联;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例c71是一种网络服务器,包括:用于接收从网络浏览器到计算设备的网络实时通信(webrtc)提议的模块;用于将webrtc提议转发到计算设备的模块;用于将传输控制协议(tcp)消息提供给计算设备的模块,其中,tcp消息包括计算设备将通用数据报协议(udp)消息发送到网络服务器的命令,其中,udp消息包括在tcp消息中;以及用于基于由计算设备响应于命令发送到网络服务器的udp消息来识别用于计算设备的互联网协议(ip)地址和端口的模块。

示例c72可以包括示例c71的主题,并且还可以包括:用于响应于由计算设备接收到webrtc提议而接收来自计算设备的webrtc应答的模块;以及用于将webrtc应答转发到网络浏览器的模块。

示例c73可以包括示例c71-72中任一项的主题,并且还可以包括:用于将附加的候选信息发送到网络浏览器的模块,并且可以进一步指定附加的候选信息包括用于计算设备的ip地址和端口。

示例c74可以包括示例c71-73中任一项的主题,并且可以进一步指定用于识别的模块,作为基于udp消息来识别用于计算设备的ip地址和端口的部分,识别被存储为位于网络服务器与计算设备之间的中间设备中udp端口映射的用于计算设备的公共地址。

示例c75可以包括示例c74的主题,并且可以进一步指定中间设备是网络地址转换器或代理屏障。

示例c76可以包括示例c71-75中任一项的主题,并且可以进一步指定udp消息包括网络浏览器的标识符。

示例c77可以包括示例c71-76中任一项的主题,并且可以进一步指定udp消息是使用网络服务器已知的秘钥加密的。

示例c78可以包括示例c71-77中任一项的主题,并且还可以包括:用于将网页提供给网络浏览器的模块。

示例c79可以包括示例c78的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且其中,用于提供的模块,作为将网页提供给网络浏览器的部分:存储对应的多个平台的多个标识符;接收针对网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例c80可以包括示例c78-79中任一项的主题,并且可以进一步指定网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c81可以包括示例c78-80中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c82可以包括示例c78-81中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及将二进制块提供给网络服务器的代码。

示例c83可以包括示例c71-82中任一项的主题,并且可以进一步指定:webrtc提议与由使用中继穿透网络地址转换器(turn)服务器促进的webrtc连接相关联;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例84是一种用于网络通信的方法,包括:由网络服务器接收从网络浏览器到计算设备的网络实时通信(webrtc)提议;由网络服务器将webrtc提议转发到计算设备;由网络服务器将传输控制协议(tcp)消息提供给计算设备,其中,tcp消息包括计算设备将通用数据报协议(udp)消息发送到网络服务器的命令,其中,udp消息包括在tcp消息中;以及由网络服务器基于由计算设备响应于命令发送到网络服务器的udp消息来识别用于计算设备的互联网协议(ip)地址和端口。

示例c85可以包括示例c84的主题,并且还可以包括:由网络服务器响应于由计算设备接收到webrtc提议而接收来自计算设备的webrtc应答;以及由网络服务器将webrtc应答转发到网络浏览器。

示例c86可以包括示例c84-85中任一项的主题,并且还可以包括:由网络服务器将附加的候选信息发送到网络浏览器,其中,附加的候选信息包括用于计算设备的ip地址和端口。

示例c87可以包括示例c84-86中任一项的主题,并且可以进一步指定方法包括,作为基于udp消息来识别用于计算设备的ip地址和端口的部分,识别被存储为位于网络服务器与计算设备之间的中间设备中udp端口映射的用于计算设备的公共地址。

示例c88可以包括示例c87的主题,并且可以进一步指定中间设备是网络地址转换器或代理屏障。

示例c89可以包括示例c84-88中任一项的主题,并且可以进一步指定udp消息包括网络浏览器的标识符。

示例c90可以包括示例c84-89中任一项的主题,并且可以进一步指定udp消息是使用网络服务器已知的秘钥加密的。

示例c91可以包括示例c84-90中任一项的主题,并且还可以包括:将网页提供给网络浏览器。

示例c92可以包括示例c91的主题,并且可以进一步指定网页是超文本标记语言(html)网页,并且其中,方法包括,作为将网页提供给网络浏览器的部分:存储对应的多个平台的多个标识符;接收针对网页的请求;从所存储的多个标识符中选择网络服务器的平台的标识符;至少部分地基于网络服务器的平台的标识符来识别表示网页的压缩数据集;以及响应于请求而将压缩数据集提供给网络浏览器,其中,网络浏览器用于对压缩数据集进行解压缩以显示网页。

示例c93可以包括示例c91-92中任一项的主题,并且可以进一步指定:网页包括用于网络浏览器在中继服务器的网络端口上执行至少一个异步javascript和可扩展标记语言(ajax)查询的指令,并且其中,网络端口用作使用中继穿透网络地址转换器(turn)端口和超文本传输协议(http)端口二者。

示例c94可以包括示例c91-93中任一项的主题,并且可以进一步指定:网页包括用于在网络浏览器与多个其它计算设备之间建立对等网络实时通信(webrtc)连接的javascript代码。

示例c95可以包括示例c91-94中任一项的主题,并且可以进一步指定:网页包括用于以第一格式生成网络实时通信(webrtc)提议以用于在网络浏览器与计算设备之间建立webrtc通信的代码,用于将webrtc提议从第一格式变换为二进制块的代码,以及将二进制块提供给网络服务器的代码。

示例c96可以包括示例c84-95中任一项的主题,并且可以进一步指定:webrtc提议与由使用中继穿透网络地址转换器(turn)服务器促进的webrtc连接相关联;以及turn服务器是以星形配置或网格配置布置的多个turn服务器中的一个。

示例c97是一种或多种计算机可读介质,其上具有指令,该指令响应于由计算设备的一个或多个处理设备执行而使得计算设备执行示例c34-44和c84-96中任一项的方法。

示例c98是一种装置,包括用于执行示例c34-44和c84-96中任一项的方法的模块。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1