CN112713969A - 数据传输方法和使用该方法的装置、系统 - Google Patents
数据传输方法和使用该方法的装置、系统 Download PDFInfo
- Publication number
- CN112713969A CN112713969A CN202011611706.3A CN202011611706A CN112713969A CN 112713969 A CN112713969 A CN 112713969A CN 202011611706 A CN202011611706 A CN 202011611706A CN 112713969 A CN112713969 A CN 112713969A
- Authority
- CN
- China
- Prior art keywords
- data packet
- downlink
- uplink
- server
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/08—Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供了一种数据传输方法以及使用该方法的装置和系统。一种由终端执行的数据传输方法包括:与服务器之间初始化用于传输数据的业务通道;经由所述业务通道向服务器发送上行数据,其中,经由所述业务通道向服务器发送上行数据的步骤包括:针对待发送的上行数据包,创建与所述上行数据包对应的上行索引;经由所述业务通道向服务器发送包括上行索引的上行数据包;保存与发送的上行数据包对应的上行索引。
Description
技术领域
本公开涉及数据传输领域,更具体地,本公开涉及一种用于在视频会议中使用的数据传输方法和使用该方法的数据传输装置、数据传输系统以及计算机可读记录介质。
背景技术
随着技术的发展,视频会议系统越来越多地被企业、政府、社会单位等使用来组织各种用途的会议。另外,随着高速无线通信技术(例如,4G、5G)和具有高素质摄像头的智能设备的普及,基于多个终端设备的视频会议系统应用(APP)也得到了飞速地发展。在业务需求上,目前视频会议业务已经遇到了诸如会议空间、共享标注以及远程控制等需求。这些业务都需要数据传输技术支持实时的多端同步、录制回放的能力,并且要求不同业务之间服务是分开的,不应该相互冲突或阻塞。
一种针对视频会议的流水线(pipeline)模型采用如下的数据传输方式:业务层生成推送的消息,调用推送服务将数据推送到在线设备,同时将数据写入流水线;离线设备在上线后根据本地保存的游标先从流水线同步离线变更,再处理在线推送。但这样存在的问题是,为了纠正乱序或丢包的消息,在拉取丢包请求成功之前会阻塞客户端已经收到的包的执行,因此会增加一定的消息延时,并且下行服务端每次推送需要增加一次远程过程调用(RPC)。
发明内容
将在接下来的描述中部分阐述本公开总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本公开总体构思的实施而得知。
根据本公开的一方面,提供了一种由终端执行的数据传输方法,包括:与服务器之间初始化用于传输数据的业务通道;经由所述业务通道向服务器发送上行数据,其中,经由所述业务通道向服务器发送上行数据的步骤包括:针对待发送的上行数据包,创建与所述上行数据包对应的上行索引;经由所述业务通道向服务器发送包括上行索引的上行数据包;保存与发送的上行数据包对应的上行索引。
根据本公开的另一方面,提供了一种由服务器执行的数据传输方法,包括:与终端之间初始化用于传输数据的业务通道;经由所述业务通道从终端接收上行数据;其中,经由所述业务通道从终端接收上行数据的步骤包括:经由所述业务通道接收从终端发送的包括上行索引的上行数据包。
根据本公开的一方面,提供了一种由服务器执行的数据传输方法,包括:与终端之间初始化用于传输数据的业务通道;经由所述业务通道向终端发送下行数据,其中,经由所述业务通道向终端发送下行数据的步骤包括:生成将被发送给终端的包括下行索引的下行数据包;经由所述业务通道向终端发送下行数据包。
根据本公开的一方面,提供了由终端执行的数据传输方法,包括:与服务器之间初始化用于数据传输的业务通道;经由所述业务通道发送上行数据和接收下行数据,其中,经由所述业务通道向服务器发送上行数据的步骤包括:针对待发送的上行数据包,创建与所述上行数据包对应的上行索引;经由所述业务通道向服务器发送包括上行索引的上行数据包;保存与发送的上行数据包对应的上行索引,其中,经由所述业务通道从服务器接收下行数据的步骤包括:经由所述业务通道从服务器接收包括下行索引的下行数据包;按照与下行索引对应的顺序来处理下行数据包;保存与接收的下行数据包对应的下行索引。
根据本公开的一方面,提供了一种由服务器执行的数据传输方法,包括:与终端之间初始化用于数据传输的业务通道;经由所述业务通道接收上行数据和发送下行数据,其中,经由所述业务通道接收上行数据的步骤包括:经由所述业务通道接收从终端发送的包括上行索引的上行数据包,其中,经由所述业务通道发送下行数据的步骤包括:生成将被发送给终端的包括下行索引的下行数据包;经由所述业务通道向终端发送下行数据包。
根据本公开的一方面,提供了一种终端设备,包括:初始化模块,被配置为与服务器之间初始化用于传输数据的业务通道;数据发送模块,被配置为经由所述业务通道向服务器发送上行数据,其中,数据发送模块被配置为:针对待发送的上行数据包,创建与所述上行数据包对应的上行索引;经由所述业务通道向服务器发送包括上行索引的上行数据包;保存与发送的上行数据包对应的上行索引。
根据本公开的一方面,提供了一种终端设备,包括:初始化模块,被配置为与服务器之间初始化用于传输数据的业务通道;数据接收模块,被配置为经由所述业务通道从服务器接收下行数据,其中,数据接收模块被配置为:经由所述业务通道从服务器接收包括下行索引的下行数据包;按照与下行索引对应的顺序来处理下行数据包;保存与接收的下行数据包对应的下行索引。
根据本公开的一方面,提供了一种服务器,包括:初始化模块,被配置为与终端之间初始化用于传输数据的业务通道;数据接收模块,被配置为经由所述业务通道从终端接收上行数据;其中,数据接收模块被配置为经由所述业务通道接收从终端发送的包括上行索引的上行数据包。
根据本公开的一方面,提供了一种服务器,包括:初始化模块,被配置为与终端之间初始化用于传输数据的业务通道;数据发送模块,被配置为经由所述业务通道向终端发送下行数据,其中,数据发送模块被配置为生成将被发送给终端的包括下行索引的下行数据包并经由所述业务通道向终端发送包括下行索引的下行数据包。
根据本公开的一方面,提供了一种终端设备,包括:初始化模块,被配置为与服务器之间初始化用于数据传输的业务通道;数据传输模块,被配置为经由所述业务通道发送上行数据和接收下行数据,数据传输模块被配置为针对待发送的上行数据包,创建与所述上行数据包对应的上行索引,经由所述业务通道向服务器发送包括上行索引的上行数据包,并保存与发送的上行数据包对应的上行索引,数据传输模块还被配置为经由所述业务通道从服务器接收包括下行索引的下行数据包,按照与下行索引对应的顺序来处理下行数据包,并保存与接收的下行数据包对应的下行索引。
根据本公开的一方面,提供了一种服务器,包括:初始化模块,被配置为与终端之间初始化用于数据传输的业务通道;数据传输模块,被配置为经由所述业务通道接收上行数据和发送下行数据,其中,数据传输模块被配置为经由所述业务通道接收从终端发送的包括上行索引的上行数据包,其中,数据传输模块还被配置为生成将被发送给终端的包括下行索引的下行数据包;经由所述业务通道向终端发送下行数据包。
根据本公开的数据传输方法、装置、终端、服务器和系统能够在服务器端和客户端实现数据包的有序性处理,并且能够保证数据包的送达和丢包重传。另外,服务器端可根据索引来存储数据包并更新状态,从而可实现业务操作的记录和回放,并为刚加入数据传输的用户下发当前状态。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制,其中:
图1示出根据本公开的示例性实施例的数据传输系统的架构图;
图2示出根据本公开的示例性实施例的客户端和服务器之间的交互流程的示意图;
图3示出根据本公开的示例性实施例的用于数据传输的业务通道的状态流转图;
图4是示出根据本公开的示例性实施例的由终端设备执行的数据传输方法的流程图;
图5是示出根据本公开的示例性实施例的由终端设备执行的数据传输方法的流程图;
图6是示出根据本公开的示例性实施例的由服务器执行的数据传输方法的流程图;
图7是示出根据本公开的示例性实施例的由服务器执行的数据传输方法的流程图;
图8是示出根据本公开的示例性实施例的由终端设备执行的数据传输方法的流程图;
图9是示出根据本公开的示例性实施例的由服务器执行的数据传输方法的流程图;
图10是示出根据本公开的示例性实施例的终端设备的框图;
图11是示出根据本公开的示例性实施例的终端设备的框图;
图12是示出根据本公开的示例性实施例的服务器的框图;
图13是示出根据本公开的示例性实施例的服务器的框图;
图14是示出根据本公开的示例性实施例的终端设备的框图;
图15是示出根据本公开的示例性实施例的服务器的框图;
图16是示出适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
在以下说明中,以安装有视频会议的应用的客户端设备(例如,智能手机、PC、平板电脑、笔记本电脑、PDA等)和通过各种通信技术与客户端设备连接的服务器来说明根据本公开的实施例的数据传输方法、装置和系统。应理解,本公开的实施例的数据传输方法不限于上述的客户端设备和服务器。另外,在以下说明中,基于特定的开发平台和通信协议来解释根据本公开的实施例的数据传输方法、装置和系统。但本领域的技术人员应理解,在不脱离本公开的构思的情况下,根据本公开的实施例的数据传输方法、装置和系统可应用于其他的开发平台和通信协议。下面将对本公开的实施例中涉及到的一些术语进行解释。
Rust:表示使用Rust语言实现的各种应用(APP)的软件开发工具包(SDK)。
客户端(Client):调用应用的SDK的客户端,一般是指PC、iOS、Android端的应用。
服务器端(Server):表示视频会议业务的后台服务器。
RPC:远程过程调用(Remote Procedure Call)的缩写形式,用于服务与服务之间的通信。
上行和下行:消息产生者为客户端APP、接收者为服务器端的消息链路称为上行数据通路,例如,HTTP请求;消息产生者为服务器端、接收者为客户端APP的消息链路称为下行数据通路,通常为长连接。
Frontier:一种基于WebSocket协议的长连接服务,可以实现统一封装协议路由转发。通过Frontier,可以在客户端与服务端之间建立一条全双工数据通路,允许服务端主动向客户端推送消息。
复合连接:由Rust提供的底层网络优化,用于提高弱网情况下的上行请求成功率。
Groot:在Rust层抽象定义的一种通用的视频会议特定的协议,用于对接各种业务,例如,MeetingSpace(会议空间)、Sketch(共享标注)、RemoteControl(远程控制)。
GrootChannel:Groot协议所使用的业务通道。Groot协议可以同时存在多条GrootChannel,每条GrootChannel都用类型和channel_id来唯一标识自己。每个类型对应着一种业务,例如,与会议空间对应的类型MEETING_SPACE、与共享标注业务对应的类型SKETCH、与远程控制业务对应的类型REMOTE_CONTROL。channel_id则用来表示业务内的不同实体,例如:SKETCH业务内的channel_id是对应的sketch_id。每条GrootChannel在与服务器端握手的时候,都会由Rust层生成一个按时间单调递增的会话ID(session_id),标识当前GrootChannel与服务器端建立的一次会话。一个GrootChannel可能会与服务器端进行多次握手,每次握手都建立新的会话(session_id)。
GrootCell:GrootChannel数据通路上传输的数据包。在本公开的实施例中,GrootCell可包括三种类型:
·CLIENT_REQ,客户端发起的请求更新数据,用于请求更新服务器的状态。这里,服务器的状态包括但不限于诸如存储在服务器中的内容的状态等。例如,在视频会议的场景中,CLIENT_REQ类型的数据包可用于客户端对存储在服务器端的共享文档发起修改。这种修改以增量更新的数据包的形式被提供给服务器端,从而可方便多个客户端对服务器的共享文档进行修改;
·SERVER_SET,服务器端广播推送的数据,可以是来自客户端的上行数据的转发;
·TRIGGER,由服务器端或客户端触发的广播推送的数据(不发给触发者),不改变服务器端的状态和操作日志。例如,在视频会议的场景中,可表示由客户端触发的同步鼠标位置、同步屏幕滚动位置等;
在下文中,根据本公开的各种实施例,将参照附图对本公开的方法、设备和系统进行描述。
图1示出根据本公开的示例性实施例的数据传输系统的架构图。
参照图1,根据本公开的示例性实施例的数据传输系统包括客户端A、客户端B、客户端C、Groot层、上行网关、下行网关和服务器端。客户端与网关、服务器之间可采用任何适合的通信连接技术连接。在图1中,客户端A将3个上行数据包GrootCell发送给Groot层。Groot层将3个上行数据包按顺序地通过上行业务通道发送给服务器端。这里,上行业务通道可包括由websocket协议实现的长连接服务和由HTTP2/Quic协议实现的短连接服务。根据本公开的实施例,3个上行数据包中的2个上行数据包通过websocket协议的长连接服务发送到服务器,而1个上行数据包由于长连接的中断而通过短连接服务发送到服务器。
接下来,服务器端对接收到的数据包进行处理并更新服务器的状态,将数据包所请求的操作记录到日志中,然后生成下行数据包。这里,服务器的状态可包括存储在服务器中的数据(例如,共享的文档、模板、格式等)的状态。如图1所示,服务器可包括状态存储器和日志存储器用于分别存储服务器的状态和操作日志。然后,服务器端生成的3个下行数据包经由网关通过包括长连接服务和短连接服务的下行业务通道发送给Groot层,Groot层将数据包分别发送给两个客户端B和客户端C。这里,假设由于服务器端的并发导致发送给客户端B和客户端C的下行数据包出现了乱序和重复,即,如图1所示,在Groot层收到的下行数据包的数量和顺序并不对应于与上行数据包的数量和顺序。下面将以图1示出的架构作为示例来说明根据本公开的实施例的数据传输方法、装置和系统。应理解,以上的架构仅是示例而非限制本公开的实施例的数据传输方法、装置和系统可以应用的架构,根据本公开的实施例不限于上述的客户端的数量、通信协议、连接服务。
下面将参照图2来说明根据本公开的实施例的客户端和服务器端之间的交互流程。应理解,在以下说明中以上述的Groot协议作为示例来说明图2的根据本公开的实施例的客户端和服务器之间的交互,但本公开的实施例不限于Groot协议而是可使用任何合适的支持全双工的通信协议。
参照图2,首先,客户端与服务器执行初始化过程以建立业务通道和会话。根据公开的实施例,客户端可调用API(OPEN_GROOT_CHANNEL),这时,Rust(即,图2中的Groot)初始化一个业务通道并向服务器端发送握手请求,握手请求主要用于初始化一个会话,并通过对于握手请求的响应获得服务器端当前处理到的数据包的上行索引(up_version)和/或下行索引(down_version)。一个业务通道可以多次建立会话。这里,上行索引和下行索引是服务器端处理的数据包的计数。根据本公开的实施例,上行索引的值从服务器处理第一个来自客户端的上行数据包开始从预定值(例如,0)开始累加。类似地,下行索引的值从服务器处理第一个下行数据包开始从预定值(例如,0)开始累加。也就是说,服务器每处理一个上行数据包,up_version的值加1,每处理一个下行数据包,down_version的值加1。每当有客户端与服务器端建立业务通道并请求握手时,服务器端将当前的上行索引和/或下行索引发送至该客户端。
下面将分别对上行和下行的交互过程进行描述。
在上行过程中,客户端调用SEND_GROOT_CELLS来发送上行数据包。这时,Rust根据从服务器接收到的当前上行索引生成与客户端处理的上行数据包相应的上行索引,并将包括上行索引的上行数据包发送给服务器端。客户端每处理一个数据包,上行索引的值累加1。例如,如果在握手请求响应收到的服务器的当前的上行索引up_version的值为100,则客户端每处理一个包,Rust从100开始累计上行索引的值。也就是说,客户端处理的第一个包所对应的上行索引的值为101,以此累加。对于每次的上行发包请求,Rust将每次发送的up_version添加到缓存队列,若单次请求成功,则将这次请求的up_version从队列中移除,若单次请求失败或超时(不同业务通道类型可配置不同的超时时间),则继续重试。若重试成功,则继续处理后续的上行数据包。若重试预定次数之后仍然发送失败,则通知客户端当前通道已经不可用,由客户端决定是否继续。这里,Rust上行发包优先选择Frontier协议的长连接,如果Frontier协议的长连接断开或者不可使用,则选择Quic/HTTP2协议的短连接来发送上行数据包。
另外,Rust每隔预定时间(例如,1分钟)向服务器端发送心跳请求,并检查上一次客户端调用接口发包的时间与当前时间的间隔,如果该间隔大于阈值时间(例如,5分钟),则需要向客户端推送保活状态请求。如果客户端仍然处于活跃状态,则向Rust发送一个保活请求。Rust收到保活请求后确认客户端还处于活跃状态,继续保持当前Channel;如果没有收到保活请求,则表示客户端已经崩溃,Rust主动关闭当前业务通道,停止向服务端发送心跳。下面参照图3来说明业务通道的状态变化。
图3示出了业务通道的状态流转图。如图3所示,当初始化握手成功时,业务通道从“CONNECTING”(连接中)状态转换为“CONNECTED”(已连接)状态。如上所述,如果由于网络断开等原因导致发送请求失败或超时,则业务通道的状态从CONNECTED状态转换为UNAVAILABLE(不可用)状态。接下来,如果网络恢复,则从UNAVAILABLE状态转换回到CONNECTED状态,而无论是在CONNECTED状态还是UNAVAILABLE状态,如果客户端长时间没有上行数据包发送,则通道状态变为“WILL_BE_CLOSED”(即将关闭)状态。这时,Rust向客户端推送该状态,如果接收到来自客户端的保活请求,则业务通道从WILL_BE_CLOSED状态变回CONNECTED状态,而如果未接收到保活请求,则从WILL_BE_CLOSED状态变为CLOSED(关闭)状态。另外,如果在CONNECTED状态或UNAVAILABLE状态下接收到来自客户端的主动关闭请求,则业务通道从以上状态变为CLOSED状态。
参照回到图2,在上行过程中,响应于成功接收到来自客户端的上行数据包,服务器端可发送成功确认消息(SEND_GROOT_CELL SUCCESS),Rust将该确认消息发送给客户端,从而客户端可根据该确认消息来确定在上行过程中是否发生丢包并确定是否需要重传。根据本公开的实施例,当服务器端收到的上行数据包的类型为CLIENT_REQ时,则服务器端判断收到上行数据包的up_version是否有序,即,up_version的值是否为连续的。例如,如果在握手响应中发送给客户端的up_version的值为100,则从该客户端接收到的GrootCell的up_version的值应该从101开始连续增加,如果值不连续则确定GrootCell的up_version为无序。另外,如果确定上行数据包的顺序是有序的,则服务器端可直接处理该上行数据包,如果无序,则先可将该上行数据包放到缓存队列,等待中间缺失的包的到来后再进行处理。具体地,服务器端可根据接收到的上行数据包的上行索引来去除重复的上行数据包。另外,服务器端还可根据接收到的上行数据包的上行索引来执行上行数据包的排序。另外,服务器端可将上行数据包所请求的操作录入操作日志(log)并根据请求的操作更新存储在服务器端的状态(state)。
接下来,在下行过程中,服务器端首先可按照预定的逻辑来处理上行数据包以生成下行数据包。对于每个GrootCell,服务器端判断该GrootCell所请求的操作(action)类型。如果GrootCell的类型为TRIGGER类型,则服务器端确定只转发该GrootCell,不在该GrootCell中填入down_version,也不改变服务器端的状态的down_version,直接将该GrootCell广播给订阅了该业务通道(channel_id)的所有订阅者。如果GrootCell的类型为其他类型,则生成对应的down_version,并将包括生成的down_version的GrootCell加入缓存队列,并更新state对应的down_version。在正常情况下,服务端通过长连接(例如,Frontier、Websocket)协议向客户端推送GrootCell(PUSH_GROOT_CELLS),如果长连接协议不可用,则通过短连接(例如,Quic/HTTP2)协议向客户端推送GrootCell。
在正常情况下,Rust通过frontier接收GrootCell。对于收到的每个GrootCell,Rust将其存入缓存,找出缓存中当前处理到的down_version后的所有连续GrootCell推送给客户端(PUSH_GROOT_CELLS),并从缓存中删除已经推送给客户端的GrootCell。如果发现有不连续的down_version,则认为有丢包。此时,Rust找出缓存中所有缺失的GrootCell的down_version,通过短连接从服务器端拉取缺失的GrootCell。若拉包成功,则Rust重复以上的过程来获取作为下行数据包的GrootCell。如果在以上过程中检测到长连接断开,则Rust从当前处理到的最新down_version开始以预定时间间隔(例如,2秒)轮询以拉取最新的down_version后面的预定数量(例如,10个)的GrootCell(PULL_GROOT_CELLS)。此后,如果长连接恢复,则Rust停止轮询。任何情况下,如果连续若干次(例如,3次)拉包失败,则Rust认为当前的业务通道不可用,并向客户端推送UNAVALAIBLE状态。如果从客户端接收到主动关闭的消息(CLOSE_GROOT_CHANNEL),则Rust关闭与服务器端建立的业务通道,并向客户端回复关闭成功的消息(CLOSE_GROOT_CHANNEL_SUCCESS)。
通过以上的数据传输的交互方式,由于在服务器端和客户端采用了统一的上行索引和下行索引并将索引加入数据包中,因此可在服务器端和客户端实现数据包的有序性处理,并且能够保证数据包的送达和丢包重传。另外,服务器端可根据索引来存储数据包并更新状态,从而可实现业务操作的记录和回放,并为刚加入数据传输的用户下发当前状态。
以下将参照图4-图15来说明根据本公开的实施例的数据传输架构所包括的终端设备和服务器的数据传输过程。应理解,参照图1-图3描述的数据传输过程可由以下参照图4-图15中描述的由终端设备执行的数据传输方法、由服务器执行的数据传输方法、终端设备和服务器中的至少一个来实现其中的至少一部分操作或至少一部分实体。在以下说明中,终端设备可以是例如个人计算机、手机、平板电脑,并且在以上参照图1-图3说明的软件工具包Rust和客户端(例如,安装在终端设备上的app)可存在于以下说明中的终端设备上。根据本公开的实施例的客户端可包括社交app、视频会议app、即时通讯app、在线教育app之中的至少一个。另外,在以下说明中,服务器可以是以上参照图1-图3说明的服务器端。
下面将参照图4来说明根据本公开的实施例的由终端设备执行的数据传输方法。
参照图4,首先,在步骤S401,终端设备与服务器之间初始化用于传输数据的业务通道。接下来,在步骤S403,经由所述业务通道向服务器发送上行数据,具体地,可通过以下操作来发送上行数据:针对待发送的上行数据包,创建与所述上行数据包对应的上行索引,经由所述业务通道向服务器发送包括上行索引的上行数据包,并保存与发送的上行数据包对应的上行索引。
根据本公开的实施例,步骤S401可包括:向服务器发送用于建立会话的握手请求,并从服务器接收握手请求响应,其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引(up_version)。可根据握手请求响应中所包括的上行索引来确定会话建立之后首个待发送的上行数据包的上行索引,其中,上行索引的值根据终端处理的上行数据包的数量从预定值开始累加,这里,所述预定值是所述与服务器当前处理的上行数据包对应的上行索引的值。
根据本公开的实施例,保存与发送的上行数据包对应的上行索引的步骤可包括将与发送的上行数据包对应的上行索引添加到缓存队列,并且,经由所述业务通道向服务器发送上行数据的步骤还包括:响应于所述发送的上行数据包被成功发送,从缓存队列中去除与成功发送的上行数据包对应的上行索引;响应于所述发送的上行数据包没有被成功发送,则重新尝试发送所述发送的上行数据包。
根据本公开的实施例,重新尝试发送所述发送的上行数据包的步骤可包括:在所述重新尝试失败预定次数的情况下,确定业务通道不可用,并根据是否接收到来自客户端的保活请求来决定是否关闭业务通道。
根据本公开的实施例,所述业务通道由业务的类型标识和业务的实体标识来表示,其中,所述类型标识指示会议空间、共享标注和远程控制之中的至少一个,所述实体标识指示对应的类型标识下的不同实体,并且所述业务通道使用长连接协议和短连接协议中的至少一个的连接来发送上行数据包,其中,长连接协议优先于短连接协议被选择用于发送上行数据包。
根据本公开的实施例,所述方法还可包括检查客户端的活跃状态并根据客户端的活跃状态来确定保持业务通道或关闭业务通道(S405)。具体地,软件开发工具包以预定时间间隔向服务器发送心跳请求,并检查终端上一次发送上行数据包的时间与当前时间之间的间隔。响应于检查出所述间隔超出预设阈值,软件开发工具包向客户端推送保活状态。如果客户端在被推送保活状态时处于活跃状态,则由客户端向软件开发工具包发送保活请求以继续保持业务通道;如果客户端在被推送保活状态时处于非活跃状态,则由软件开发工具包主动关闭业务通道。
根据本公开的实施例,所述上行数据包包括用于指示数据包的类型的信息,其中,数据包的类型包括请求更新服务器的状态的类型和用于直接转发给其他客户端的类型。
接下来,将参照图5来说明根据本公开的另一实施例的由终端设备执行的数据传输方法。在以下说明中,对于在先前实施例中已经详细说明或定义过的特征、功能、操作等将不再重复描述。本领域的技术人员应理解,在不脱离本公开的构思的前提下,以上的用于传输数据的方法的相同或类似的特征也可应用于本公开的其他实施例。
如图5所示,首先,在步骤S501,与服务器之间初始化用于传输数据的业务通道。接下来,在步骤S503,经由所述业务通道从服务器接收下行数据。根据本公开的实施例,经由所述业务通道从服务器接收下行数据的步骤S503可包括:经由业务通道从服务器接收包括下行索引(down_version)的下行数据包,按照与下行索引对应的顺序来处理下行数据包,以及保存与接收的下行数据包对应的下行索引。
根据本公开的实施例,与服务器之间初始化用于传输数据的业务通道的步骤可包括:向服务器发送用于建立会话的握手请求;从服务器接收握手请求响应,其中,握手请求响应包括与服务器当前处理的下行数据包对应的下行索引。这里,按照与下行索引对应的顺序来处理下行数据包的步骤可包括:将接收到的下行数据包存入缓存,并处理缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包。
根据本公开的实施例,所述方法由安装在终端上的客户端通过调用软件开发工具包来执行,所述客户端包括安装在终端上的应用。
根据本公开的实施例,处理缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包的步骤可包括:由软件开发工具包将缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包推送给客户端。保存与接收的下行数据包对应的下行索引的步骤可包括:将最后推送的下行数据包的下行索引保存作为用于推送后续接收到的下行数据包的起始点。
根据本公开的实施例,所述方法还可包括S505确定是否存在丢包并请求获取丢失的数据包。具体地,终端设备可检查缓存中的下行数据包的下行索引的值,响应于确定缓存中的下行索引的值不连续,确定存在丢失的下行数据包并向服务器请求获取丢失的下行数据包。
根据本公开的实施例,在业务通道中根据长连接协议和短连接协议中的至少一个的连接接收下行数据包,长连接协议优先于短连接协议被选择用于接收下行数据包,短连接协议优先于长连接协议被选择用于获取丢失的下行数据包。根据本公开的实施例,所述方法还包括:响应于检测到根据长连接协议的连接断开,从最后保存的下行数据包的下行索引开始轮询服务器以请求最后保存的下行数据包的下行索引之后预定数量的下行数据包。
接下来,将参照图6来说明根据本公开的实施例的由服务器执行的数据传输方法。
参照图6,首先,在步骤S601,与终端之间初始化用于传输数据的业务通道。接下来,在步骤S603,经由所述业务通道从终端接收上行数据。具体地,服务器可经由所述业务通道接收从终端发送的包括上行索引的上行数据包。
根据本公开的实施例,与终端之间初始化用于传输数据的业务通道的步骤可包括:响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应,其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引,其中,接收到的上行数据包的上行索引的值从预定值开始累加,所述预定值是所述与服务器当前处理的上行数据包对应的上行索引的值。
根据本公开的实施例,服务器可根据长连接协议和短连接协议中的至少一个来接收上行数据包,其中,长连接协议优先于短连接协议被选择用于接收上行数据包。
根据本公开的实施例的服务器的传输数据的方法还可包括处理接收到的上行数据的步骤S605。可根据以下操作中的至少一个来处理接收到的上行数据包:响应于确定接收到的上行数据包的上行索引的值为连续的,直接处理接收到的上行数据包;响应于确定接收到的上行数据包的上行索引的值为不连续的,将接收到的上行数据包放入缓存,并在接收到与缺失的上行索引的值对应的上行数据包之后处理存储在缓存中的上行数据包;以及根据接收到的上行数据包的上行索引的值去除重复的上行数据包。
根据本公开的实施例的上行数据包可包括用于指示数据包的类型的信息,其中,数据包的类型包括请求更新服务器的状态的类型和用于直接转发给其他客户端的类型。
根据本公开的实施例,可通过以下方式之一对接收到的上行数据包进行处理:根据接收到的上行数据包的上行索引的值的顺序将接收到的上行数据包所请求的操作记录到日志;以及按照接收到的上行数据包的上行索引的值的顺序和接收到的上行数据包所请求的操作来改变服务器的状态。
接下来,将参照图7来说明根据本公开的另一实施例的由服务器执行的数据传输方法。
参照图7,首先,在步骤S701,与终端之间初始化用于传输数据的业务通道。接下来,在步骤S703经由所述业务通道向终端发送所述下行数据。具体地,在步骤S703,服务器可生成将被发送给终端的包括下行索引的下行数据包,并经由所述业务通道向终端发送下行数据包。这里,可根据接收到的来自终端设备的上行数据包来生成的下行数据包。
根据本公开的实施例,与终端之间初始化用于传输数据的业务通道的步骤可包括:响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应。这里,握手请求响应可包括与服务器当前处理的下行数据包对应的下行索引。
根据本公开的实施例,可根据长连接协议和短连接协议中的至少一个来发送所述下行数据包,其中,长连接协议优先于短连接协议被选择用于发送所述下行数据包。
根据本公开的实施例,生成的下行数据包的服务器下行索引的值根据服务器处理的下行数据包的数量增加而累加。
根据本公开的实施例,生成将被发送给终端的下行数据包的步骤可包括:响应于要被发送给终端的一个数据包的类型为用于请求更新服务器的状态的数据包,生成与所述一个数据包对应的一个下行数据包,并通过将所述当前下行索引的值加一来计算得到所述一个下行数据包的下行索引的值;响应于要被发送给终端的数据包的类型为仅用于转发的数据包,直接将该数据包作为所述下行数据包转发给终端而不在所述下行数据包中添加下行索引。
接下来,将参照图8来说明根据本公开的另一实施例的由终端设备执行的数据传输方法。
参照图8,首先,在步骤S801,与服务器之间初始化用于数据传输的业务通道。接下来,在步骤S803,经由所述业务通道发送上行数据和接收下行数据。具体地,在步骤S803,针对待发送的上行数据包,创建与所述上行数据包对应的上行索引,经由所述业务通道向服务器发送包括上行索引的上行数据包,并保存与发送的上行数据包对应的上行索引。在步骤703还经由所述业务通道从服务器接收包括下行索引的下行数据包,按照与下行索引对应的顺序来处理下行数据包,并保存与接收的下行数据包对应的下行索引。
这里,步骤S801可包括:向服务器发送用于建立会话的握手请求,并从服务器接收握手请求响应。根据本公开的实施例,握手请求响应可包括与服务器当前处理的上行数据包对应的上行索引以及与服务器当前处理的下行数据包对应的下行索引。
应理解,参照图8说明的根据本公开的实施例的由终端设备执行的数据传输方法还可包括参照图4和图5说明的由终端设备执行的上行数据传输过程和下行数据传输过程中的任意一个或更多个操作。另外,根据本公开的实施例的由终端设备执行的数据传输方法还可包括检查客户端的活跃状态以确定保持业务通道或关闭业务通道的步骤(参照图4描述的步骤S405)和参照图5描述的确定丢包并获取丢失的下行数据包的步骤(参照图5描述的步骤S505),在这里不再重复描述。
接下来,将参照图9来说明根据本公开的另一实施例的由服务器执行的数据传输方法。
首先,在步骤S901,与终端之间初始化用于数据传输的业务通道。然后,在步骤S903,经由所述业务通道接收上行数据和发送下行数据。具体地,经由所述业务通道接收上行数据的步骤可包括经由所述业务通道接收从终端发送的包括上行索引的上行数据包。经由所述业务通道发送下行数据的步骤可包括:生成将被发送给终端的包括下行索引的下行数据包;经由所述业务通道向终端发送下行数据包。
根据本公开的实施例,步骤S901可包括:响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应,其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引和与服务器当前处理的下行数据包对应的下行索引。
应理解,参照图9说明的根据本公开的实施例的由服务器执行的数据传输方法还可包括参照图6和图7说明的由服务器执行的接收上行数据和发送下行数据过程中的任意一个或更多个操作。另外,根据本公开的实施例的由服务器执行的数据传输方法还可包括处理上行数据的步骤(参照图6描述的步骤S605),在这里不再重复描述。
下面将参照图10来说明根据本公开的实施例的终端设备1000。
如图10所示,终端设备1000可包括初始化模块1001和数据发送模块1003。初始化模块1001被配置为与服务器之间初始化用于传输数据的业务通道。数据发送模块1003被配置为经由所述业务通道向服务器发送上行数据。具体地,数据发送模块针对待发送的上行数据包,创建与所述上行数据包对应的上行索引,经由所述业务通道向服务器发送包括上行索引的上行数据包,并保存与发送的上行数据包对应的上行索引。
初始化模块1001可向服务器发送用于建立会话的握手请求,并从服务器接收握手请求响应,其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引。数据发送模块1003可根据握手请求响应中所包括的上行索引来确定会话建立之后首个待发送的上行数据包的上行索引,其中,上行索引的值根据终端处理的上行数据包的数量从预定值开始累加,所述预定值是所述与服务器当前处理的上行数据包对应的上行索引的值。
根据本公开的实施例,数据发送模块1003还可保存与发送的上行数据包对应的上行索引的步骤可包括将与发送的上行数据包对应的上行索引添加到缓存队列。响应于所述发送的上行数据包被成功发送,数据发送模块1003从缓存队列中去除与成功发送的上行数据包对应的上行索引,响应于所述发送的上行数据包没有被成功发送,则重新尝试发送所述发送的上行数据包。
根据本公开的实施例,在所述重新尝试失败预定次数的情况下,数据发送模块1003可确定业务通道不可用,并决定是否关闭业务通道。
根据本公开的实施例,所述业务通道由业务的类型标识和业务的实体标识来表示,其中,所述类型标识指示会议空间、共享标注和远程控制之中的至少一个,所述实体标识指示对应的类型标识下的不同实体,并且所述业务通道使用长连接协议和短连接协议中的至少一个的连接来发送上行数据包,其中,长连接协议优先于短连接协议被数据发送模块1003选择用于发送上行数据包。
根据本公开的实施例,终端设备1000还可包括状态确定模块1005。状态确定模块1005可检查客户端的活跃状态并根据客户端的活跃状态来确定保持业务通道或关闭业务通道。具体地,状态确定模块1005可控制终端设备1000中的软件工具包和客户端已执行以下操作:软件工具包以预定时间间隔向服务器发送心跳请求,并检查终端上一次发送上行数据包的时间与当前时间之间的间隔。响应于检查出所述间隔超出预设阈值,软件工具包向客户端推送保活状态。如果客户端在被推送保活状态时处于活跃状态,则由客户端向软件开发工具包发送保活请求以继续保持业务通道;如果客户端在被推送保活状态时处于非活跃状态,则由软件开发工具包主动关闭业务通道。
根据本公开的实施例,上行数据包可包括用于指示数据包的类型的信息,其中,数据包的类型包括请求更新服务器的状态的类型和用于直接转发给其他客户端的类型。
下面将参照图11来说明根据本公开的另一实施例的终端设备1100。
如图11所示,终端设备1000可包括初始化模块1101和数据接收模块1103。初始化模块1101被配置为与服务器之间初始化用于传输数据的业务通道。数据接收模块1103被配置为经由所述业务通道从服务器接收下行数据。具体地,数据接收模块1103被配置为:经由所述业务通道从服务器接收包括下行索引的下行数据包,按照与下行索引对应的顺序来处理下行数据包,并保存与接收的下行数据包对应的下行索引。
初始化模块1101可向服务器发送用于建立会话的握手请求,并从服务器接收握手请求响应,其中,握手请求响应包括与服务器当前处理的下行数据包对应的下行索引。这里,数据接收模块1103可将接收到的下行数据包存入缓存,并处理缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包。
根据本公开的实施例,数据接收模块1103可控制终端设备1100中的软件工具包和客户端执行以下操作:由软件开发工具包将缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包推送给客户端。保存与接收的下行数据包对应的下行索引的步骤可包括:将最后推送的下行数据包的下行索引保存作为用于推送后续接收到的下行数据包的起始点。
根据本公开的实施例,数据接收模块1103还可确定是否存在丢包并请求获取丢失的数据包。具体地,数据接收模块1103可检查缓存中的下行数据包的下行索引的值,响应于确定缓存中的下行索引的值不连续,确定存在丢失的下行数据包并向服务器请求获取丢失的下行数据包。
根据本公开的实施例,数据接收模块1103在业务通道中根据长连接协议和短连接协议中的至少一个来接收下行数据包,长连接协议优先于短连接协议被选择用于接收下行数据包,短连接协议优先于长连接协议被选择用于获取丢失的下行数据包。根据本公开的实施例,数据接收模块1103响应于检测到根据长连接协议的连接断开,从最后保存的下行数据包的下行索引开始轮询服务器以请求最后保存的下行数据包的下行索引之后预定数量的下行数据包。
此外,根据本公开的实施例的终端设备1100还可包括丢包处理模块1105。被配置为确定是否存在丢包并请求获取丢失的数据包。具体地,丢包处理模块1105可检查缓存中的下行数据包的下行索引的值,响应于确定缓存中的下行索引的值不连续,确定存在丢失的下行数据包并向服务器请求获取丢失的下行数据包。
下面将参照图12来说明根据本公开的实施例的服务器1200。
如图12所示,服务器1200包括初始化模块1201和数据接收模块1203。初始化模块1201被配置为与终端之间初始化用于传输数据的业务通道。数据接收模块1203被配置为经由所述业务通道从终端接收上行数据。具体地,数据接收模块1203被配置为经由所述业务通道接收从终端发送的包括上行索引的上行数据包。
初始化模块1201响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应。这里,握手请求响应可包括与服务器当前处理的上行数据包对应的上行索引。数据接收模块1203接收到的上行数据包的上行索引的值根据终端处理的上行数据包的数量从预定值开始累加,所述预定值是所述与服务器当前处理的上行数据包对应的上行索引的值。
根据本公开的实施例,数据接收模块1203可根据长连接协议和短连接协议中的至少一个来接收上行数据包,其中,长连接协议优先于短连接协议被选择用于接收上行数据包。
根据本公开的实施例的服务器1200还可包括数据处理模块1205。数据处理模块1205可根据以下操作中的至少一个处理接收到的上行数据包:响应于确定接收到的上行数据包的上行索引的值为连续的,直接处理接收到的上行数据包;响应于确定接收到的上行数据包的上行索引的值为不连续的,将接收到的上行数据包放入缓存,并在接收到与缺失的上行索引的值对应的上行数据包之后处理存储在缓存中的上行数据包;以及根据接收到的上行数据包的上行索引的值去除重复的上行数据包。
根据本公开的实施例的上行数据包可包括用于指示数据包的类型的信息,其中,数据包的类型包括请求更新服务器的状态的类型和用于直接转发给其他客户端的类型。
根据本公开的实施例,数据处理模块1205还可通过以下方式之一对接收到的上行数据包进行处理:根据接收到的上行数据包的上行索引的值的顺序将接收到的上行数据包所请求的操作记录到日志;以及按照接收到的上行数据包的上行索引的值的顺序和接收到的上行数据包所请求的操作来改变服务器的状态。
下面将参照图13来说明根据本公开的另一实施例的服务器1300。如图13所示,服务器1300包括初始化模块1301和数据发送模块1303。初始化模块1301被配置为与终端之间初始化用于传输数据的业务通道。数据发送模块1303被配置为经由所述业务通道向终端发送下行数据,其中,数据发送模块1303被配置为生成将被发送给终端的包括下行索引的下行数据包并经由所述业务通道向终端发送包括下行索引的下行数据包。
初始化模块1301可响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应。这里,握手请求响应可包括与服务器当前处理的下行数据包对应的下行索引。
根据本公开的实施例,数据发送模块1303可根据长连接协议和短连接协议中的至少一个来发送所述下行数据包,其中,长连接协议优先于短连接协议被选择用于发送所述下行数据包。
根据本公开的实施例,数据发送模块1303生成的下行数据包的服务器下行索引的值根据服务器处理的下行数据包的数量增加而累加。
根据本公开的实施例,数据发送模块1303可响应于要被发送给终端的一个数据包的类型为用于请求更新服务器的状态的数据包,生成与所述一个数据包对应的一个下行数据包,并通过将所述当前下行索引的值加一来计算得到所述一个下行数据包的下行索引的值;响应于要被发送给终端的数据包的类型为仅用于转发的数据包,直接将该数据包作为所述下行数据包转发给终端而不在所述下行数据包中添加下行索引。
下面将参照图14来说明根据本公开的又一实施例的终端设备1400。
如图14所示,终端设备1400包括初始化模块1401和数据传输模块1403。初始化模块1401被配置为与服务器之间初始化用于数据传输的业务通道。数据传输模块1403被配置为经由所述业务通道发送上行数据和接收下行数据。具体地,数据传输模块1403被配置为针对待发送的上行数据包,创建与所述上行数据包对应的上行索引,经由所述业务通道向服务器发送包括上行索引的上行数据包,并保存与发送的上行数据包对应的上行索引。数据传输模块1403还被配置为经由所述业务通道从服务器接收包括下行索引的下行数据包,按照与下行索引对应的顺序来处理下行数据包,并保存与接收的下行数据包对应的下行索引。
终端设备1400的数据传输模块1403还可执行图10的终端设备1000的数据发送模块1003和图11的终端设备1100的数据接收模块1103的任意一个或多个操作,在这里不再重复描述。另外,根据本公开的实施例的终端设备1400还可包括用于执行与参照图10描述的状态确定模块1005相同的操作的状态确定模块1405和用于执行与参照图11描述的丢包处理模块1105相同的操作的丢包处理模块1407,在这里不再重复描述。
下面将参照图15来说明根据本公开的又一实施例的服务器1500。
如图15所示,服务器1500包括初始化模块1501和数据传输模块1503。初始化模块1501被配置为与终端之间初始化用于数据传输的业务通道。数据传输模块1503被配置为经由所述业务通道接收上行数据和发送下行数据,其中,数据传输模块1503被配置为经由所述业务通道接收从终端发送的包括上行索引的上行数据包。数据传输模块1503还被配置为生成将被发送给终端的包括下行索引的下行数据包,并经由所述业务通道向终端发送下行数据包。
服务器1500还可包括数据处理模块1505可执行与参照图12描述的服务器1200的数据处理模块1205的一个或更多个操作相同的操作。另外,数据传输模块1503还可执行图12的服务器1200的数据接收模块1203和图13的服务器1300的数据接收模块1303的任意一个或多个操作,在这里不再重复描述。此外,服务器1500还可包括用于执行与参照图12描述的数据处理模块1205相同的操作的数据处理模块1505,在这里不再重复描述。
下面参考图16,其示出了适于用来实现本公开实施例的电子设备(例如图5-图15中的终端设备或服务器)1600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图16示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图16所示,电子设备1600可以包括处理装置(例如中央处理器、图形处理器等)1601,其可以根据存储在只读存储器(ROM)1602中的程序或者从存储装置1606加载到随机访问存储器(RAM)1603中的程序而执行各种适当的动作和处理。在RAM 1603中,还存储有电子设备1600操作所需的各种程序和数据。处理装置1601、ROM 1602以及RAM 1603通过总线1604彼此相连。输入/输出(I/O)接口1605也连接至总线1604。
通常,以下装置可以连接至I/O接口1605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1607;包括例如磁带、硬盘等的存储装置1606;以及通信装置1609。通信装置1609可以允许电子设备1600与其他设备进行无线或有线通信以交换数据。虽然图16示出了具有各种装置的电子设备1600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1609从网络上被下载和安装,或者从存储装置1606被安装,或者从ROM 1602被安装。在该计算机程序被处理装置1601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取至少两个网际协议地址;向节点评价设备发送包括所述至少两个网际协议地址的节点评价请求,其中,所述节点评价设备从所述至少两个网际协议地址中,选取网际协议地址并返回;接收所述节点评价设备返回的网际协议地址;其中,所获取的网际协议地址指示内容分发网络中的边缘节点。
或者,上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收包括至少两个网际协议地址的节点评价请求;从所述至少两个网际协议地址中,选取网际协议地址;返回选取出的网际协议地址;其中,接收到的网际协议地址指示内容分发网络中的边缘节点。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定,例如,第一获取单元还可以被描述为“获取至少两个网际协议地址的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (38)
1.一种由终端执行的数据传输方法,包括:
与服务器之间初始化用于传输数据的业务通道;
经由所述业务通道向服务器发送上行数据,其中,经由所述业务通道向服务器发送上行数据的步骤包括:
针对待发送的上行数据包,创建与所述上行数据包对应的上行索引;
经由所述业务通道向服务器发送包括上行索引的上行数据包;
保存与发送的上行数据包对应的上行索引。
2.如权利要求1所述的方法,其中,与服务器之间初始化用于传输数据的业务通道的步骤包括:
向服务器发送用于建立会话的握手请求;
从服务器接收握手请求响应,其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引,
并且,所述方法还包括:根据握手请求响应中所包括的上行索引来确定会话建立之后首个待发送的上行数据包的上行索引,
其中,上行索引的值根据终端处理的上行数据包的数量从预定值开始累加,所述预定值是所述与服务器当前处理的上行数据包对应的上行索引的值。
3.如权利要求1所述的方法,其中,保存与发送的上行数据包对应的上行索引的步骤包括:将与发送的上行数据包对应的上行索引添加到缓存队列,
并且,经由所述业务通道向服务器发送上行数据的步骤还包括:
响应于所述发送的上行数据包被成功发送,从缓存队列中去除与成功发送的上行数据包对应的上行索引;
响应于所述发送的上行数据包没有被成功发送,则重新尝试发送所述发送的上行数据包。
4.如权利要求3所述的方法,其中,重新尝试发送所述发送的上行数据包的步骤包括:在所述重新尝试失败预定次数的情况下,确定所述业务通道不可用,并根据是否接收到来自客户端的保活请求来决定是否关闭所述业务通道。
5.如权利要求1所述的方法,其中,所述方法由安装在终端上的客户端通过调用软件开发工具包来执行,所述客户端包括安装在终端上的应用。
6.如权利要求5所述的方法,其中,所述终端包括个人计算机、手机、平板之中的至少一个,并且,所述应用包括社交app、视频会议app、即时通讯app、在线教育app之中的至少一个。
7.如权利要求5所述的方法,其中,所述业务通道由业务的类型标识和业务的实体标识来表示,其中,所述类型标识指示会议空间、共享标注和远程控制之中的至少一个,所述实体标识指示对应的类型标识下的不同实体。
8.如权利要求5所述的方法,其中,所述业务通道使用长连接协议和短连接协议中的至少一个的连接来发送上行数据包,其中,长连接协议优先于短连接协议被选择用于发送上行数据包。
9.如权利要求5所述的方法,所述方法还包括:
软件开发工具包以预定时间间隔向服务器发送心跳请求,并检查终端上一次发送上行数据包的时间与当前时间之间的间隔;
响应于检查出所述间隔超出预设阈值,软件开发工具包向客户端推送保活状态;
如果客户端在被推送保活状态时处于活跃状态,则由客户端向软件开发工具包发送保活请求以继续保持所述业务通道;如果客户端在被推送保活状态时处于非活跃状态,则由软件开发工具包主动关闭所述业务通道。
10.如权利要求1-9中任意一个所述的方法,其中,所述上行数据包包括用于指示数据包的类型的信息,其中,数据包的类型包括请求更新服务器的状态的类型和用于直接转发给其他客户端的类型。
11.一种由终端执行的数据传输方法,包括:
与服务器之间初始化用于传输数据的业务通道;
经由所述业务通道从服务器接收下行数据,其中,经由所述业务通道从服务器接收下行数据的步骤包括:
经由所述业务通道从服务器接收包括下行索引的下行数据包;
按照与下行索引对应的顺序来处理下行数据包;
保存与接收的下行数据包对应的下行索引。
12.如权利要求11所述的方法,其中,与服务器之间初始化用于传输数据的业务通道的步骤包括:向服务器发送用于建立会话的握手请求;从服务器接收握手请求响应,其中,握手请求响应包括与服务器当前处理的下行数据包对应的下行索引,
并且,按照与下行索引对应的顺序来处理下行数据包的步骤包括:将接收到的下行数据包存入缓存,并处理缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包。
13.如权利要求12所述的方法,其中,所述方法由安装在终端上的客户端通过调用软件开发工具包来执行,所述客户端包括安装在终端上的应用,
其中,处理缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包的步骤包括:由软件开发工具包将缓存中具有与服务器当前处理的下行数据包对应的下行索引之后的下行索引的下行数据包推送给客户端,
其中,保存与接收的下行数据包对应的下行索引的步骤包括:将最后推送的下行数据包的下行索引保存作为用于推送后续接收到的下行数据包的起始点。
14.如权利要求13所述的方法,还包括:
检查缓存中的下行数据包的下行索引的值;
响应于确定缓存中的下行索引的值不连续,确定存在丢失的下行数据包并向服务器请求获取丢失的下行数据包。
15.如权利要求11-14中任意一个所述的方法,其中,在业务通道中根据长连接协议和短连接协议中的至少一个的连接接收下行数据包,其中,长连接协议优先于短连接协议被选择用于接收下行数据包。
16.如权利要求11-14中任意一个所述的方法,其中,短连接协议优先于长连接协议被选择用于获取丢失的下行数据包。
17.如权利要求15所述的方法,还包括:响应于检测到根据长连接协议的连接断开,从最后保存的下行数据包的下行索引开始轮询服务器以请求获取最后保存的下行数据包的下行索引之后的预定数量的下行数据包。
18.一种由服务器执行的数据传输方法,包括:
与终端之间初始化用于传输数据的业务通道;
经由所述业务通道从终端接收上行数据;
其中,经由所述业务通道从终端接收上行数据的步骤包括:经由所述业务通道接收从终端发送的包括上行索引的上行数据包。
19.如权利要求18所述的方法,其中,与终端之间初始化用于传输数据的业务通道的步骤包括:
响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应,
其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引,
其中,接收到的上行数据包的上行索引的值从预定值开始累加,所述预定值是所述与服务器当前处理的上行数据包对应的上行索引的值。
20.如权利要求18所述的方法,其中,根据长连接协议和短连接协议中的至少一个来接收上行数据包,其中,长连接协议优先于短连接协议被选择用于接收上行数据包。
21.如权利要求18所述的方法,还包括:处理接收到的上行数据包,
其中,处理接收到的上行数据包的步骤包括以下操作中的至少一个:
响应于确定接收到的上行数据包的上行索引的值为连续的,直接处理接收到的上行数据包;
响应于确定接收到的上行数据包的上行索引的值为不连续的,将接收到的上行数据包放入缓存,并在接收到与缺失的上行索引的值对应的上行数据包之后处理存储在缓存中的上行数据包;以及
根据接收到的上行数据包的上行索引的值去除重复的上行数据包。
22.如权利要求18-22中任意一个所述的方法,所述上行数据包还包括用于指示数据包的类型的信息,其中,数据包的类型包括请求更新服务器的状态的类型和用于直接转发给其他客户端的类型。
23.如权利要求18-22中任意一个所述的方法,其中,通过以下方式之一对接收到的上行数据包进行处理:
根据接收到的上行数据包的上行索引的值的顺序将接收到的上行数据包所请求的操作记录到日志;以及
按照接收到的上行数据包的上行索引的值的顺序和接收到的上行数据包所请求的操作来改变服务器的状态。
24.一种由服务器执行的数据传输方法,包括:
与终端之间初始化用于传输数据的业务通道;
经由所述业务通道向终端发送下行数据,
其中,经由所述业务通道向终端发送下行数据的步骤包括:
生成将被发送给终端的包括下行索引的下行数据包;
经由所述业务通道向终端发送下行数据包。
25.如权利要求24所述的方法,其中,与终端之间初始化用于传输数据的业务通道的步骤包括:
响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应,
其中,握手请求响应包括与服务器当前处理的下行数据包对应的下行索引。
26.如权利要求24所述的方法,其中,根据长连接协议和短连接协议中的至少一个来发送所述下行数据包,
其中,长连接协议优先于短连接协议被选择用于发送所述下行数据包。
27.如权利要求24所述的方法,其中,生成的下行数据包的服务器下行索引的值根据服务器处理的下行数据包的数量增加而累加。
28.如权利要求24所述的方法,其中,生成将被发送给终端的下行数据包的步骤包括:
响应于要被发送给终端的一个数据包的类型为用于请求更新服务器的状态的数据包,生成与所述一个数据包对应的一个下行数据包,并通过将所述当前下行索引的值加一来计算得到所述一个下行数据包的下行索引的值;
响应于要被发送给终端的数据包的类型为仅用于转发的数据包,直接将该数据包作为所述下行数据包转发给终端而不在所述下行数据包中添加下行索引。
29.一种由终端执行的数据传输方法,包括:
与服务器之间初始化用于数据传输的业务通道;
经由所述业务通道发送上行数据和接收下行数据,
其中,经由所述业务通道向服务器发送上行数据的步骤包括:针对待发送的上行数据包,创建与所述上行数据包对应的上行索引;经由所述业务通道向服务器发送包括上行索引的上行数据包;保存与发送的上行数据包对应的上行索引,
其中,经由所述业务通道从服务器接收下行数据的步骤包括:经由所述业务通道从服务器接收包括下行索引的下行数据包;按照与下行索引对应的顺序来处理下行数据包;保存与接收的下行数据包对应的下行索引。
30.如权利要求29所述的方法,其中,与服务器之间初始化用于传输数据的业务通道的步骤包括:
向服务器发送用于建立会话的握手请求;
从服务器接收握手请求响应,其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引以及与服务器当前处理的下行数据包对应的下行索引。
31.一种由服务器执行的数据传输方法,包括:
与终端之间初始化用于数据传输的业务通道;
经由所述业务通道接收上行数据和发送下行数据,
其中,经由所述业务通道接收上行数据的步骤包括:经由所述业务通道接收从终端发送的包括上行索引的上行数据包,
其中,经由所述业务通道发送下行数据的步骤包括:生成将被发送给终端的包括下行索引的下行数据包;经由所述业务通道向终端发送下行数据包。
32.如权利要求31所述的方法,其中,与终端之间初始化用于传输数据的业务通道的步骤包括:
响应于接收到来自终端的用于建立会话的握手请求,向终端发送握手请求响应,
其中,握手请求响应包括与服务器当前处理的上行数据包对应的上行索引和与服务器当前处理的下行数据包对应的下行索引。
33.一种终端设备,包括:
初始化模块,被配置为与服务器之间初始化用于传输数据的业务通道;
数据发送模块,被配置为经由所述业务通道向服务器发送上行数据,其中,
数据发送模块被配置为:针对待发送的上行数据包,创建与所述上行数据包对应的上行索引;经由所述业务通道向服务器发送包括上行索引的上行数据包;保存与发送的上行数据包对应的上行索引。
34.一种终端设备,包括:
初始化模块,被配置为与服务器之间初始化用于传输数据的业务通道;
数据接收模块,被配置为经由所述业务通道从服务器接收下行数据,其中,数据接收模块被配置为:经由所述业务通道从服务器接收包括下行索引的下行数据包;按照与下行索引对应的顺序来处理下行数据包;保存与接收的下行数据包对应的下行索引。
35.一种服务器,包括:
初始化模块,被配置为与终端之间初始化用于传输数据的业务通道;
数据接收模块,被配置为经由所述业务通道从终端接收上行数据;
其中,数据接收模块被配置为经由所述业务通道接收从终端发送的包括上行索引的上行数据包。
36.一种服务器,包括:
初始化模块,被配置为与终端之间初始化用于传输数据的业务通道;
数据发送模块,被配置为经由所述业务通道向终端发送下行数据,
其中,数据发送模块被配置为生成将被发送给终端的包括下行索引的下行数据包并经由所述业务通道向终端发送包括下行索引的下行数据包。
37.一种终端设备,包括:
初始化模块,被配置为与服务器之间初始化用于数据传输的业务通道;
数据传输模块,被配置为经由所述业务通道发送上行数据和接收下行数据,
数据传输模块被配置为针对待发送的上行数据包,创建与所述上行数据包对应的上行索引,经由所述业务通道向服务器发送包括上行索引的上行数据包,并保存与发送的上行数据包对应的上行索引,
数据传输模块还被配置为经由所述业务通道从服务器接收包括下行索引的下行数据包,按照与下行索引对应的顺序来处理下行数据包,并保存与接收的下行数据包对应的下行索引。
38.一种服务器,包括:
初始化模块,被配置为与终端之间初始化用于数据传输的业务通道;
数据传输模块,被配置为经由所述业务通道接收上行数据和发送下行数据,
其中,数据传输模块被配置为经由所述业务通道接收从终端发送的包括上行索引的上行数据包,
其中,数据传输模块还被配置为生成将被发送给终端的包括下行索引的下行数据包;经由所述业务通道向终端发送下行数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011611706.3A CN112713969B (zh) | 2020-12-30 | 2020-12-30 | 数据传输方法和使用该方法的装置、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011611706.3A CN112713969B (zh) | 2020-12-30 | 2020-12-30 | 数据传输方法和使用该方法的装置、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112713969A true CN112713969A (zh) | 2021-04-27 |
CN112713969B CN112713969B (zh) | 2022-11-29 |
Family
ID=75547298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011611706.3A Active CN112713969B (zh) | 2020-12-30 | 2020-12-30 | 数据传输方法和使用该方法的装置、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112713969B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965482A (zh) * | 2021-10-19 | 2022-01-21 | 北京天融信网络安全技术有限公司 | 基于gRPC的数据传输方法、装置及存储介质 |
CN115150483A (zh) * | 2022-05-17 | 2022-10-04 | 浙江木链物联网科技有限公司 | 一种网络数据包解析方法、系统及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008087364A2 (fr) * | 2007-01-09 | 2008-07-24 | Tdf | Procede de transmission/reception en temps reel de donnees par paquets entre un serveur et un terminal client, serveur et terminal correspondants |
CN101436978A (zh) * | 2007-11-15 | 2009-05-20 | 盛乐信息技术(上海)有限公司 | 使用udp协议进行可靠数据传输的方法 |
CN102137027A (zh) * | 2011-05-03 | 2011-07-27 | 厦门市美亚柏科信息股份有限公司 | 数据的可靠传输方法和装置 |
CN110557677A (zh) * | 2019-09-27 | 2019-12-10 | 北京西山居互动娱乐科技有限公司 | 一种视频传输的方法及装置 |
CN111083735A (zh) * | 2019-11-18 | 2020-04-28 | 中兴通讯股份有限公司 | 一种数据包的发送、接收方法及装置 |
-
2020
- 2020-12-30 CN CN202011611706.3A patent/CN112713969B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008087364A2 (fr) * | 2007-01-09 | 2008-07-24 | Tdf | Procede de transmission/reception en temps reel de donnees par paquets entre un serveur et un terminal client, serveur et terminal correspondants |
CN101632263A (zh) * | 2007-01-09 | 2010-01-20 | Tdf公司 | 服务器与客户终端及以包方式实时发送/接收数据的方法 |
CN101436978A (zh) * | 2007-11-15 | 2009-05-20 | 盛乐信息技术(上海)有限公司 | 使用udp协议进行可靠数据传输的方法 |
CN102137027A (zh) * | 2011-05-03 | 2011-07-27 | 厦门市美亚柏科信息股份有限公司 | 数据的可靠传输方法和装置 |
CN110557677A (zh) * | 2019-09-27 | 2019-12-10 | 北京西山居互动娱乐科技有限公司 | 一种视频传输的方法及装置 |
CN111083735A (zh) * | 2019-11-18 | 2020-04-28 | 中兴通讯股份有限公司 | 一种数据包的发送、接收方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965482A (zh) * | 2021-10-19 | 2022-01-21 | 北京天融信网络安全技术有限公司 | 基于gRPC的数据传输方法、装置及存储介质 |
CN115150483A (zh) * | 2022-05-17 | 2022-10-04 | 浙江木链物联网科技有限公司 | 一种网络数据包解析方法、系统及可读存储介质 |
CN115150483B (zh) * | 2022-05-17 | 2023-08-29 | 浙江木链物联网科技有限公司 | 一种网络数据包解析方法、系统及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112713969B (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110662085B (zh) | 消息发送方法、装置、可读介质及电子设备 | |
CN111147606B (zh) | 数据传输的方法、装置、终端及存储介质 | |
CN112713969B (zh) | 数据传输方法和使用该方法的装置、系统 | |
CN112583529B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN111245709A (zh) | 一种消息推送方法、装置、电子设备及存储介质 | |
WO2011088725A1 (zh) | 基于http的同步方法和装置 | |
WO2023093879A1 (zh) | 数据传输方法、装置、设备和介质 | |
CN112256733A (zh) | 数据缓存方法、装置、电子设备及计算机可读存储介质 | |
CN112199174A (zh) | 消息发送的控制方法、装置、电子设备及计算机可读存储介质 | |
CN109889922B (zh) | 流媒体数据的转发方法、装置、设备和存储介质 | |
CN111755008B (zh) | 信息处理方法、装置、电子设备及介质 | |
WO2024082882A1 (zh) | 多媒体内容的传输方法、装置、设备及存储介质 | |
CN113542856A (zh) | 在线录像的倒放方法、装置、设备和计算机可读介质 | |
CN103533054B (zh) | 多终端间实现协同处理的方法及多终端协同处理装置 | |
CN113094002A (zh) | 消息处理方法、装置、电子设备和计算机介质 | |
WO2021110693A1 (en) | Network aggregation system | |
US20150055551A1 (en) | Mobile wireless access point notification delivery for periodically disconnected mobile devices | |
CN111212257A (zh) | 分布式视频会议的控制方法、装置及相关设备 | |
CN112866178A (zh) | 音频数据传输的方法和装置 | |
CN116185665A (zh) | 一种消息处理方法、装置、设备及介质 | |
CN112187943B (zh) | 数据同步方法和使用该方法的装置、系统 | |
CN113242446B (zh) | 视频帧的缓存方法、转发方法、通信服务器及程序产品 | |
CN113238808B (zh) | 一种消息推送方法和装置 | |
CN104348701A (zh) | 一种在即时通信工具中进行文件传输的方法及装置 | |
CN113364672B (zh) | 媒体网关信息确定方法、装置、设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |