一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

连接方法、装置、电子设备和计算机可读存储介质与流程

2022-06-01 14:25:36 来源:中国专利 TAG:


1.本公开涉及前端技术领域,尤其涉及一种连接方法、装置、电子设备和计算机可读存储介质。


背景技术:

2.为用户提供直播流媒体资源的平台,常常开发了专门的应用程序,可实现全面、丰富的资源管理。然而这类应用程序常常体量较大,占用了较多的设备资源。
3.h5页面、小程序等端外容器的诞生,有效解决了这一问题,使得用户能够在不安装专门应用程序的情况下,观看平台提供的直播流媒体资源,大大降低了设备资源的消耗。不同于平台专门开发的应用程序,这类端外容器与直播服务器之间,常采用websocket通信来传递消息(例如传递直播中的聊天、礼物、榜单等消息),这是一种在单个tcp(transmission control protocol,传输控制协议)连接上进行全双工通信的协议,使得通信双方只需完成一次握手,就直接创建持久性的连接,并可进行双向数据传输,也就是通信双方可以在连接保持期间互相连续发送数据,从而简化数据交换。然而这类端外容器往往仅提供了websocket通信的能力,并且有websocket任务数量限制,一旦超限,就无法新建websocket任务,也就无法传输相应的消息,造成利用这类端外容器浏览直播流媒体资源时,消息传输的可靠性和稳定性较低。


技术实现要素:

4.本公开提供一种连接方法、装置、电子设备和计算机可读存储介质,以至少解决相关技术中的端外容器消息传输的可靠性和稳定性较低的问题,也可不解决任何上述问题。
5.根据本公开的第一方面,提供了一种连接方法,包括:接收创建第一连接任务的任务请求,一个连接任务用于维护当前浏览器客户端与直播服务端之间的一个双向长连接;查询第二连接任务,所述第二连接任务是当前已建立的连接任务;响应于确定所述第二连接任务的数量大于或等于设定数量,关闭满足设定条件的所述第二连接任务,并根据所述任务请求创建第一连接任务;根据所述第一连接任务,向所述直播服务端发送与所述第一连接任务相对应的连接请求,以请求创建相应的双向长连接。
6.可选地,所述关闭满足设定条件的所述第二连接任务的步骤,包括:关闭处于连接休眠状态的所述第二连接任务;或关闭创建时刻最早的所述第二连接任务。
7.可选地,每个连接任务对应的双向长连接用于传输相对应的直播流媒体资源的消息,在所述查询第二连接任务的步骤之后,所述连接方法还包括:响应于确定所述第二连接任务中存在目标连接任务,激活所述目标连接任务对应的双向长连接,并放弃创建所述第一连接任务,其中,所述目标连接任务对应的直播流媒体资源与所述第一连接任务对应的直播流媒体资源一致。
8.可选地,所述查询第二连接任务的步骤,包括:查询所述第二连接任务的任务标识,所述任务标识是所述第二连接任务对应的直播流媒体资源的资源标识;所述确定所述
第二连接任务中存在目标连接任务的步骤,包括:响应于确定所述任务标识中存在目标标识,确定所述第二连接任务中存在所述目标连接任务,其中,所述目标标识是所述第一连接任务对应的直播流媒体资源的资源标识。
9.可选地,所述连接方法还包括:响应于接收到任一所述第二连接任务对应的双向长连接的断开事件,重新连接相应的所述第二连接任务对应的双向长连接。
10.可选地,所述响应于接收到任一所述第二连接任务对应的双向长连接的断开事件,重新连接相应的所述第二连接任务对应的双向长连接的步骤,包括:响应于接收到任一所述第二连接任务对应的双向长连接的故障事件,重新连接相应的所述第二连接任务对应的双向长连接;和/或响应于接收到任一所述第二连接任务对应的双向长连接的关闭事件,且未接收到相应的所述第二连接任务对应的双向长连接的断开指令,重新连接相应的所述第二连接任务对应的双向长连接。
11.可选地,所述响应于接收到任一所述第二连接任务对应的双向长连接的断开事件,重新连接相应的所述第二连接任务对应的双向长连接的步骤,包括:响应于接收到任一所述第二连接任务对应的双向长连接的断开事件,发起重连请求,以重新连接相应的所述第二连接任务对应的双向长连接;响应于确定重连失败,等待预设时长后,再次发起所述重连请求,直到重连成功或连续发起所述重连请求的次数达到重连阈值。
12.可选地,所述连接方法还包括:响应于接收到所述直播服务端反馈的连接确认消息,按照心跳间隔时长向所述直播服务端定时发送心跳数据;其中,所述连接确认消息包括所述心跳间隔时长,或所述心跳间隔时长为默认值。
13.根据本公开的第二方面,提供了一种连接装置,包括:接收单元,被配置为:接收创建第一连接任务的任务请求,一个连接任务用于维护当前浏览器客户端与直播服务端之间的一个双向长连接;查询单元,被配置为:查询第二连接任务,所述第二连接任务是当前已建立的连接任务;管理单元,被配置为:响应于确定所述第二连接任务的数量大于或等于设定数量,关闭满足设定条件的所述第二连接任务,并根据所述任务请求创建第一连接任务;连接单元,被配置为:根据所述第一连接任务,向所述直播服务端发送与所述第一连接任务相对应的连接请求,以请求创建相应双向长连接。
14.可选地,所述管理单元还被配置为:关闭处于连接休眠状态的所述第二连接任务;或关闭创建时刻最早的所述第二连接任务。
15.可选地,每个连接任务对应的双向长连接用于传输相对应的直播流媒体资源的消息,所述管理单元还被配置为:响应于确定所述第二连接任务中存在目标连接任务,令所述连接单元激活所述目标连接任务对应的双向长连接,并放弃创建所述第一连接任务,其中,所述目标连接任务对应的直播流媒体资源与所述第一连接任务对应的直播流媒体资源一致。
16.可选地,所述查询单元还被配置为:查询所述第二连接任务的任务标识,所述任务标识是所述第二连接任务对应的直播流媒体资源的资源标识;所述管理单元还被配置为:响应于确定所述任务标识中存在目标标识,确定所述第二连接任务中存在所述目标连接任务,其中,所述目标标识是所述第一连接任务对应的直播流媒体资源的资源标识。
17.可选地,所述连接单元还被配置为:响应于接收到任一所述第二连接任务对应的双向长连接的断开事件,重新连接相应的所述第二连接任务对应的双向长连接。
18.可选地,所述连接单元还被配置为:响应于接收到任一所述第二连接任务对应的双向长连接的故障事件,重新连接相应的所述第二连接任务对应的双向长连接;和/或响应于接收到任一所述第二连接任务对应的双向长连接的关闭事件,且未接收到相应的所述第二连接任务对应的双向长连接的断开指令,重新连接相应的所述第二连接任务对应的双向长连接。
19.可选地,所述连接单元还被配置为:响应于接收到任一所述第二连接任务对应的双向长连接的断开事件,发起重连请求,以重新连接相应的所述第二连接任务对应的双向长连接;响应于确定重连失败,等待预设时长后,再次发起所述重连请求,直到重连成功或连续发起所述重连请求的次数达到重连阈值。
20.可选地,所述连接单元还被配置为:响应于接收到所述直播服务端反馈的连接确认消息,按照心跳间隔时长向所述直播服务端定时发送心跳数据;其中,所述连接确认消息包括所述心跳间隔时长,或所述心跳间隔时长为默认值。
21.根据本公开的第三方面,提供了一种电子设备,所述电子设备包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的连接方法。
22.根据本公开的第四方面,提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令被至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的连接方法。
23.根据本公开的第五方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令被至少一个处理器执行时实现根据本公开的连接方法。
24.本公开的实施例提供的技术方案至少带来以下有益效果:
25.根据本公开的实施例的连接方法和连接装置,通过配置设定数量和设定条件,并在需要创建新的连接任务,而已建立的连接任务达到设定数量时,关闭满足设定条件的连接任务,能够及时腾出资源创建新的连接任务,实现了连接任务的动态淘汰机制,有助于保证新的连接任务对应的双向长连接能够建立成功,保障了浏览器客户端消息传输的可靠性和稳定性。
26.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
27.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
28.图1是示出根据本公开的示例性实施例的连接方法的流程图。
29.图2是示出根据本公开的示例性实施例的浏览器客户端和直播服务端的连接示意图。
30.图3是示出根据本公开的示例性实施例的连接装置的框图。
31.图4是根据本公开的示例性实施例的电子设备的框图。
具体实施方式
32.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
33.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
34.在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括a和b之中的至少一个”即包括如下三种并列的情况:(1)包括a;(2)包括b;(3)包括a和b。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
35.websocket是一种在单个tcp连接上进行全双工通信的协议。websocket使得浏览器客户端和直播服务端(提供直播服务的服务端,例如直播服务器)之间的数据交换变得更加简单,允许直播服务端主动向浏览器客户端推送数据。在websocket api(application programming interface,应用程序接口)中,浏览器客户端和直播服务端只需要完成一次握手,两者之间就直接可以创建持久性的连接,并在连接保持期间进行双向数据传输。这种通信协议在端外场景(也就是在专门的应用程序客户端场景之外的浏览器场景,如h5、各类小程序)得到了广泛的应用,例如在h5直播、微信小程序直播、qq小程序直播等场景下用于传输直播中的聊天、礼物、榜单等消息。因端外容器(以h5、各类小程序为例的浏览器服务端)仅提供了websocket通信的能力,未提供管理websocket的功能,而端外容器有websocket任务数量的限制,一旦超出限制就无法新建websocket任务,缺乏一个动态淘汰未使用websocket任务的机制。
36.下面,将参照图1至图4具体描述根据本公开的示例性实施例的连接方法和连接装置。
37.图1是示出根据本公开的示例性实施例的连接方法的流程图。图2是示出根据本公开的示例性实施例的浏览器客户端和直播服务端的连接示意图。应理解,根据本公开的示例性实施例的连接方法可以在诸如智能手机、平板电脑、个人电脑(pc)的终端设备中实现。
38.具体地,这些终端设备中的浏览器客户端往往例如图2中左侧部分所示,具备业务功能模块,可实现具体的直播业务功能,另可为浏览器客户端配置管理模块(例如图2所示的端外websocket管理模块),根据本公开的示例性实施例的连接方法可由该管理模块实现。该管理模块可设计为一个web框架(web框架指运行在浏览器客户端上来实现h5、小程序等的代码)的插件,在加载时实例化,挂载在web框架的原型上。
39.参照图1,在步骤101,接收创建第一连接任务的任务请求,一个连接任务用于维护当前浏览器客户端与直播服务端之间的一个双向长连接。当用户在当前浏览器客户端进入某个直播间时,参照图2,直播功能模块可向管理模块发送任务请求(对应于图2中的创建消息),以创建第一连接任务,进而在当前浏览器客户端与直播服务端之间建立一个双向长连
接,用来接收相应的直播流媒体资源的消息,例如接收直播间的聊天、礼物、榜单等消息,这些消息包含在如图2所示的消息事件通知中。具体地,当前浏览器客户端与直播服务端之间的双向长连接是websocket连接。
40.在步骤102,查询第二连接任务,第二连接任务是当前已建立的连接任务。参照图2,管理模块可维护一个任务表(即websocket任务表),任务表中记录着当前已建立的连接任务,即第二连接任务,该任务表可为每个连接任务提供创建、查询、关闭、订阅(指其他业务模块可以订阅与连接任务相关的消息)、取消订阅的功能,管理模块可具备保持心跳、收发信令、接受订阅、接受触发事件的能力,以便于维护连接任务。通过查询任务表中各个第二连接任务的具体信息,可为后序操作提供依据。具体地,为实现后序的步骤103,此时可查询第二连接任务的数量。应理解,第一连接任务指代当前接收到的任务请求所对应的连接任务,待相应的连接任务创建完成后,该连接任务就成为了第二连接任务。
41.在步骤103,响应于确定第二连接任务的数量大于或等于设定数量,关闭满足设定条件的第二连接任务,并根据任务请求创建第一连接任务。不同的终端设备、不同的浏览器客户端所能够支持的任务数量往往不同,但通常都有限,基于该数量限制可确定设定数量。一旦确定第二连接任务的数量达到设定数量,相关技术往往无法继续传递直播流媒体资源的消息。根据本公开的示例性实施例的连接方法,通过配置设定条件,并主动关闭满足设定条件的第二连接任务,能够实现第二连接任务的动态淘汰,为新的连接任务腾出资源,以创建相应的第一连接任务。例如参照图2,设定数量可为5。应理解,响应于确定第二连接任务的数量小于设定数量,可直接创建第一连接任务。
42.可选地,步骤103中的关闭满足设定条件的第二连接任务的步骤,包括:关闭处于连接休眠状态(也即该连接任务对应的双向长连接处于非激活状态)的第二连接任务。通过关闭连接休眠的第二连接任务,能够有针对性地关闭对应的双向长连接处于非激活状态的第二连接任务,降低了对应的双向长连接处于激活状态的连接任务被误关闭的风险,保障了各项连接任务的可靠性。举例来说,可检测各个第二连接任务对应的双向长连接最近一次传输数据的时刻,记为最近活跃时刻,若某个第二连接任务的最近活跃时刻距离当前时刻的时长超过设定时长,即该第二连接任务对应的双向长连接长时间未传递数据,则认为其处于连接休眠状态;也可为每个第二连接任务配置连接休眠状态标识,例如在对应的双向长连接发生了数据传输时就将连接休眠状态标识置0,并开始计时,在计时期间,每发生一次数据传输,就将计时清零,若计时达到设定时长仍未发生数据传输,则将连接休眠状态标识置1,应理解,若此后再次发生数据传输,就再将连接休眠状态标识置0,并开始计时。本公开对检测第二连接任务是否处于连接休眠状态的具体方式不做限制。
43.可选地,步骤103中的关闭满足设定条件的第二连接任务的步骤,包括:关闭创建时刻最早的第二连接任务。在现存的各个连接任务(即第二连接任务)中,最早创建的一个,其对应的双向长连接大概率已经没有处于激活状态。通过直接关闭创建时刻最早的第二连接任务,可简化关闭方案,大幅降低运算量,提升优化效率。
44.在步骤104,根据第一连接任务,向直播服务端发送与第一连接任务相对应的连接请求,以请求创建相应双向长连接。
45.根据本公开的示例性实施例的连接方法,每个连接任务对应的双向长连接用于传输相对应的直播流媒体资源的消息,在步骤102之后,根据本公开的示例性实施例的连接方
法还包括:响应于确定第二连接任务中存在目标连接任务,激活目标连接任务对应的双向长连接,并放弃创建第一连接任务,也就不再执行步骤104。其中,目标连接任务对应的直播流媒体资源与第一连接任务对应的直播流媒体资源一致。也就是说,在当前的第二连接任务中,有一个第二连接任务对应的直播流媒体资源,正是第一连接任务预计创建的双向长连接对应的直播流媒体资源,就将这个第二连接任务确定为目标连接任务,并不再专门创建第一连接任务,而是激活目标连接任务对应的双向长连接,可实现目标连接任务的复用,有助于节约连接资源。需说明的是,这里写到激活目标连接任务对应的双向长连接,是因为目标连接任务往往不是最新创建的第二连接任务,也就是目标连接任务对应的双向长连接往往是在此前一段时间创建,因而往往未处于激活状态。例如,第一连接任务对应于直播流媒体资源a,用户此前先进入直播间a(此时会建立目标连接任务),再进入其他至少一个直播间(此时会建立其他的第二连接任务),此时目标连接任务往往未处于连接激活状态。此后若用户再次进入直播间a而发起任务请求,就可以不再创建相应的第一连接任务,而直接激活目标连接任务复用,利用目标连接任务对应的双向长连接来传输直播流媒体资源a的消息。应理解,基于步骤103可知,在创建新的连接任务(即第一连接任务)时,若已建立的连接任务(即第二连接任务)数量超限,则需要关闭已建立的连接任务中满足设定条件的连接任务,若此时已经关闭了传输直播流媒体资源a对应的连接任务,那么后续再进入直播间a而发起任务请求时,就不存在目标连接任务了,而需要执行步骤103,关闭当前存在的已建立的连接任务中满足设定条件的连接任务。
46.总体来说,当接收到创建第一连接任务的任务请求时,可先判断是否存在目标连接任务,若存在,则激活目标连接任务对应的双向长连接,实现目标连接任务复用;若不存在,则判断第二连接任务的数量是否达到设定数量,若达到,则关闭满足设定条件的第二连接任务,并创建第一连接任务,若未达到,则直接创建第一连接任务。
47.可选地,复用目标连接任务的方案可具体执行如下。首先,查询第二连接任务的步骤可包括:查询第二连接任务的任务标识,任务标识是第二连接任务对应的直播流媒体资源的资源标识。也就是将对应的直播流媒体资源的资源标识(例如直播id)作为连接任务的任务标识,既便于直观了解每个连接任务对应的直播流媒体资源,又不必为每个第二连接任务额外配置标识,还不必将额外配置的标识与直播流媒体资源做对应,大幅降低了计算负荷。相应地,确定第二连接任务中存在目标连接任务的步骤可包括:响应于确定任务标识中存在目标标识,确定第二连接任务中存在目标连接任务,其中,目标标识是第一连接任务对应的直播流媒体资源的资源标识。也就是说,将全部第二连接任务的任务标识与目标标识(即第一连接任务对应的直播流媒体资源的资源标识)做对照,若存在与目标标识一致的任务标识,就将该任务标识对应的第二连接任务确定为目标连接任务,可确定第二连接任务中存在目标连接任务。通过配置任务标识,并直接对照任务标识和目标标识,就不必再获取每个第二连接任务所对应的直播流媒体资源的信息,可大幅降低运算量,提升响应速率。
48.根据本公开的示例性实施例的连接方法,还可包括:响应于接收到任一第二连接任务对应的双向长连接的断开事件,重新连接相应的第二连接任务对应的双向长连接。通过配置断开事件,能够及时了解第二连接任务对应的双向长连接是否稳定维持。进一步地,通过在接收到断开事件时主动重连,能够降低意外断接造成的数据传输中断,保障了数据传输的稳定性。
49.websocekt本身配置了4个不同的事件供浏览器客户端监听,以便从直播服务端得到更多信息。这4个不同的事件分别为open、message、error、close。一旦直播服务端响应了websocekt连接请求,open事件就触发并建立了一个连接。message事件在接收到消息时触发。error事件在响应意外故障的时候触发。close事件在websocekt连接关闭时触发,一旦连接关闭,浏览器客户端和直播服务端不再接收或者发送消息。
50.根据本公开的示例性实施例的连接方法,断开重连所对应的断开事件可包括故障(error)事件和未接收到断开指令的情况下的关闭(close)事件,相应地,上述响应于接收到任一第二连接任务对应的双向长连接的断开事件,重新连接相应的第二连接任务对应的双向长连接的步骤,包括:响应于接收到任一第二连接任务对应的双向长连接的故障事件,重新连接相应的第二连接任务对应的双向长连接;和/或响应于接收到任一第二连接任务对应的双向长连接的关闭事件,且未接收到相应的第二连接任务对应的双向长连接的断开指令,重新连接相应的第二连接任务对应的双向长连接。故障事件表明发生了意外故障,相应的第二连接任务对应的双向长连接可能无法正常传输数据。通过重新连接相应的第二连接任务对应的双向长连接,有助于降低意外故障对数据传输的影响,保障了数据传输的稳定性。关闭事件表明相应的第二连接任务对应的双向长连接已关闭,无法继续传输数据,此时若未接收到相应的断开指令,则可认为是发生了意外关闭,通过重新连接相应的第二连接任务对应的双向长连接,能够恢复连接,使数据继续传输,同样保障了数据传输的稳定性。
51.可选地,在首次调用管理模块时,就可以为重新连接的操作配置一个重连阈值(例如为两次)和预设时长,预设时长作为两次重连之间的时间间隔,例如为3s。相应地,重新连接的操作具体包括:响应于接收到任一第二连接任务对应的双向长连接的断开事件,发起重连请求,以重新连接相应的第二连接任务对应的双向长连接;响应于确定重连失败,等待预设时长后,再次发起重连请求,直到重连成功或连续发起重连请求的次数达到重连阈值。具体来说,针对每个连接任务,重连次数的初始值为0,可在发起一次重连请求,就将重连次数增加1,也就是在确定此次重连是否成功之前,就会先更新重连次数。若重连次数达到重连阈值时重连仍然失败,就不再重新连接,以节约资源,若重连成功,则将重连次数重置为0。应理解,对于失败后不再重连的情况,若关闭了该连接任务,并创建了新的连接任务,则重连次数也随之初始化为0。
52.应理解,根据本公开的示例性实施例的连接方法还包括:响应于接收到任一第二连接任务对应的双向长连接的关闭事件,且接收到相应的第二连接任务对应的双向长连接的断开指令,关闭相应的第二连接任务。也就是在当前浏览器客户端或直播服务端主动关闭双向长连接时,就关闭相应的第二连接任务,可及时腾出资源。断开指令可由当前浏览器客户端发出(具体可由业务功能模块发出),例如用户退出直播间时浏览器客户端主动关闭与直播服务端的双向长连接,也可由直播服务端发出,例如主播关播时直播服务端主动关闭与浏览器客户端的双向长连接。
53.根据本公开的示例性实施例的连接方法,还可包括:响应于接收到直播服务端反馈的连接确认消息,按照心跳间隔时长向直播服务端定时发送心跳数据;其中,连接确认消息包括心跳间隔时长,或心跳间隔时长为默认值。直播服务端为各种类型的客户端提供服务,往往会接入多种通信协议,以满足不同的通信需求,所以往往会自建心跳机制。
websocket虽然具备原生的心跳机制,但该原生的心跳机制属于应用层,浏览器客户端无法对其进行控制。根据本公开的示例性实施例的连接方法通过专门建立与直播服务端相适应的心跳机制,并按照连接确认消息中的心跳间隔时长或默认的心跳间隔时长来发送心跳数据,能够与直播服务端自建的心跳机制兼容。具体地,若直播服务端反馈的连接确认消息中包括心跳间隔时长,则使用该反馈值,若连接确认消息中没有包括心跳间隔时长,则使用默认值。参照图2,该心跳机制对应于图2中展示的管理模块保持心跳的能力。
54.图3是示出根据本公开的示例性实施例的连接装置的框图。应理解,根据本公开的示例性实施例的连接装置可以在诸如智能手机、平板电脑、个人电脑(pc)的终端设备中以软件、硬件或软件硬件结合的方式实现。
55.具体地,这些终端设备中的浏览器客户端往往例如图2中左侧部分所示,具备业务功能模块,可实现具体的直播业务功能,另可为浏览器客户端配置管理模块(例如图2所示的端外websocket管理模块),根据本公开的示例性实施例的连接装置可由该管理模块实现。该管理模块可设计为一个web框架的插件,在加载时实例化,挂载在web框架的原型上。
56.参照图3,连接装置300包括接收单元301、查询单元302、管理单元303、连接单元304。
57.接收单元301可接收创建第一连接任务的任务请求,一个连接任务用于维护当前浏览器客户端与直播服务端之间的一个双向长连接。当用户在当前浏览器客户端进入某个直播间时,参照图2,直播功能模块可向管理模块发送任务请求(对应于图2中的创建消息),以创建第一连接任务,进而在当前浏览器客户端与直播服务端之间建立一个双向长连接,用来接收相应的直播流媒体资源的消息,例如接收直播间的聊天、礼物、榜单等消息,这些消息包含在如图2所示的消息事件通知中。具体地,当前浏览器客户端与直播服务端之间的双向长连接是websocket连接。
58.查询单元302可查询第二连接任务,第二连接任务是当前已建立的连接任务。参照图2,管理模块可维护一个任务表(即websocket任务表),任务表中记录着当前已建立的连接任务,即第二连接任务,该任务表可为每个连接任务提供创建、查询、关闭、订阅(指其他业务模块可以订阅与连接任务相关的消息)、取消订阅的功能,管理模块可具备保持心跳、收发信令、接受订阅、接受触发事件的能力,以便于维护连接任务。通过查询任务表中各个第二连接任务的具体信息,可为后序操作提供依据。具体地,为实现后序的管理单元303的操作,查询单元302可查询第二连接任务的数量。应理解,第一连接任务指代当前接收到的任务请求所对应的连接任务,待相应的连接任务创建完成后,该连接任务就成为了第二连接任务。
59.管理单元303可响应于确定第二连接任务的数量大于或等于设定数量,关闭满足设定条件的第二连接任务,并根据任务请求创建第一连接任务。不同的终端设备、不同的浏览器客户端所能够支持的任务数量往往不同,但通常都有限,基于该数量限制可确定设定数量。一旦确定第二连接任务的数量达到设定数量,相关技术往往无法继续传递直播流媒体资源的消息。根据本公开的示例性实施例的连接装置300,通过配置设定条件,并由管理单元303主动关闭满足设定条件的第二连接任务,能够实现第二连接任务的动态淘汰,为新的连接任务腾出资源,以创建相应的第一连接任务。例如参照图2,设定数量可为5。应理解,响应于确定第二连接任务的数量小于设定数量,可直接创建第一连接任务。
60.可选地,管理单元303关闭满足设定条件的第二连接任务的操作,可包括:关闭处于连接休眠状态(也即该连接任务对应的双向长连接处于非激活状态)的第二连接任务。通过关闭连接休眠的第二连接任务,能够有针对性地关闭对应的双向长连接处于非激活状态的第二连接任务,降低了对应的双向长连接处于激活状态的连接任务被误关闭的风险,保障了各项连接任务的可靠性。举例来说,可检测各个第二连接任务对应的双向长连接最近一次传输数据的时刻,记为最近活跃时刻,若某个第二连接任务的最近活跃时刻距离当前时刻的时长超过设定时长,即该第二连接任务对应的双向长连接长时间未传递数据,则认为其处于连接休眠状态;也可为每个第二连接任务配置连接休眠状态标识,例如在对应的双向长连接发生了数据传输时就将连接休眠状态标识置0,并开始计时,在计时期间,每发生一次数据传输,就将计时清零,若计时达到设定时长仍未发生数据传输,则将连接休眠状态标识置1,应理解,若此后再次发生数据传输,就再将连接休眠状态标识置0,并开始计时。本公开对检测第二连接任务是否处于连接休眠状态的具体方式不做限制。
61.可选地,管理单元303关闭满足设定条件的第二连接任务的操作,也可包括:关闭创建时刻最早的第二连接任务。在现存的各个连接任务(即第二连接任务)中,最早创建的一个,其对应的双向长连接大概率已经没有处于激活状态。通过直接关闭创建时刻最早的第二连接任务,可简化关闭方案,大幅降低运算量,提升优化效率。
62.连接单元304可根据第一连接任务,向直播服务端发送与第一连接任务相对应的连接请求,以请求创建相应双向长连接。
63.根据本公开的示例性实施例的连接装置300,每个连接任务对应的双向长连接用于传输相对应的直播流媒体资源的消息,管理单元303还可响应于确定第二连接任务中存在目标连接任务,令连接单元304激活目标连接任务对应的双向长连接,并放弃创建第一连接任务,也就令连接单元304不再向直播服务端发送与第一连接任务相对应的连接请求。其中,目标连接任务对应的直播流媒体资源与第一连接任务对应的直播流媒体资源一致。也就是说,在当前的第二连接任务中,有一个第二连接任务对应的直播流媒体资源,正是第一连接任务预计创建的双向长连接对应的直播流媒体资源,就将这个第二连接任务确定为目标连接任务,并不再专门创建第一连接任务,而是激活目标连接任务对应的双向长连接,可实现目标连接任务的复用,有助于节约连接资源。需说明的是,这里写到激活目标连接任务对应的双向长连接,是因为目标连接任务往往不是最新创建的第二连接任务,也就是目标连接任务对应的双向长连接往往是在此前一段时间创建,因而往往未处于激活状态。例如,第一连接任务对应于直播流媒体资源a,用户此前先进入直播间a(此时会建立目标连接任务),再进入其他至少一个直播间(此时会建立其他的第二连接任务),此时目标连接任务往往未处于连接激活状态。此后若用户再次进入直播间a而发起任务请求,就可以不再创建相应的第一连接任务,而直接激活目标连接任务复用,利用目标连接任务对应的双向长连接来传输直播流媒体资源a的消息。应理解,基于管理单元303可知,在创建新的连接任务(即第一连接任务)时,若已建立的连接任务(即第二连接任务)数量超限,则需要关闭已建立的连接任务中满足设定条件的连接任务,若此时已经关闭了传输直播流媒体资源a对应的连接任务,那么后续再进入直播间a而发起任务请求时,就不存在目标连接任务了,而需要关闭当前存在的已建立的连接任务中满足设定条件的连接任务。
64.总体来说,当接收到创建第一连接任务的任务请求时,管理单元303可先判断是否
存在目标连接任务,若存在,则令连接单元304激活目标连接任务对应的双向长连接,实现目标连接任务复用;若不存在,则判断第二连接任务的数量是否达到设定数量,若达到,则关闭满足设定条件的第二连接任务,并创建第一连接任务,若未达到,则直接创建第一连接任务。
65.可选地,复用目标连接任务的方案可具体执行如下。首先,查询第二连接任务的步骤可包括:查询第二连接任务的任务标识,任务标识是第二连接任务对应的直播流媒体资源的资源标识。也就是将对应的直播流媒体资源的资源标识(例如直播id)作为连接任务的任务标识,既便于直观了解每个连接任务对应的直播流媒体资源,又不必为每个第二连接任务额外配置标识,还不必将额外配置的标识与直播流媒体资源做对应,大幅降低了计算负荷。相应地,确定第二连接任务中存在目标连接任务的步骤可包括:响应于确定任务标识中存在目标标识,确定第二连接任务中存在目标连接任务,其中,目标标识是第一连接任务对应的直播流媒体资源的资源标识。也就是说,将全部第二连接任务的任务标识与目标标识(即第一连接任务对应的直播流媒体资源的资源标识)做对照,若存在与目标标识一致的任务标识,就将该任务标识对应的第二连接任务确定为目标连接任务,可确定第二连接任务中存在目标连接任务。通过配置任务标识,并直接对照任务标识和目标标识,就不必再获取每个第二连接任务所对应的直播流媒体资源的信息,可大幅降低运算量,提升响应速率。
66.根据本公开的示例性实施例的连接装置300,连接单元304还可响应于接收到任一第二连接任务对应的双向长连接的断开事件,重新连接相应的第二连接任务对应的双向长连接。通过配置断开事件,能够及时了解第二连接任务对应的双向长连接是否稳定维持。进一步地,通过在接收到断开事件时主动重连,能够降低意外断接造成的数据传输中断,保障了数据传输的稳定性。
67.websocekt本身配置了4个不同的事件供浏览器客户端监听,以便从直播服务端得到更多信息。这4个不同的事件分别为open、message、error、close。一旦直播服务端响应了websocekt连接请求,open事件就触发并建立了一个连接。message事件在接收到消息时触发。error事件在响应意外故障的时候触发。close事件在websocekt连接关闭时触发,一旦连接关闭,浏览器客户端和直播服务端不再接收或者发送消息。
68.根据本公开的示例性实施例的连接装置300,断开重连所对应的断开事件可包括故障(error)事件和未接收到断开指令的情况下的关闭(close)事件,相应地,连接单元304在执行上述响应于接收到任一第二连接任务对应的双向长连接的断开事件,重新连接相应的第二连接任务对应的双向长连接的操作时,具体可执行:响应于接收到任一第二连接任务对应的双向长连接的故障事件,重新连接相应的第二连接任务对应的双向长连接;和/或响应于接收到任一第二连接任务对应的双向长连接的关闭事件,且未接收到相应的第二连接任务对应的双向长连接的断开指令,重新连接相应的第二连接任务对应的双向长连接。故障事件表明发生了意外故障,相应的第二连接任务对应的双向长连接可能无法正常传输数据。通过重新连接相应的第二连接任务对应的双向长连接,有助于降低意外故障对数据传输的影响,保障了数据传输的稳定性。关闭事件表明相应的第二连接任务对应的双向长连接已关闭,无法继续传输数据,此时若未接收到相应的断开指令,则可认为是发生了意外关闭,通过重新连接相应的第二连接任务对应的双向长连接,能够恢复连接,使数据继续传输,同样保障了数据传输的稳定性。
69.可选地,在首次调用管理模块时,就可以为重新连接的操作配置一个重连阈值(例如为两次)和预设时长,预设时长作为两次重连之间的时间间隔,例如为3s。相应地,连接单元304执行的重新连接的操作具体包括:响应于接收到任一第二连接任务对应的双向长连接的断开事件,发起重连请求,以重新连接相应的第二连接任务对应的双向长连接;响应于确定重连失败,等待预设时长后,再次发起重连请求,直到重连成功或连续发起重连请求的次数达到重连阈值。具体来说,针对每个连接任务,重连次数的初始值为0,可在发起一次重连请求,就将重连次数增加1,也就是在确定此次重连是否成功之前,就会先更新重连次数。若重连次数达到重连阈值时重连仍然失败,就不再重新连接,以节约资源,若重连成功,则将重连次数重置为0。应理解,对于失败后不再重连的情况,若关闭了该连接任务,并创建了新的连接任务,则重连次数也随之初始化为0。
70.应理解,根据本公开的示例性实施例的连接装置300,管理单元303还可响应于接收到任一第二连接任务对应的双向长连接的关闭事件,且接收到相应的第二连接任务对应的双向长连接的断开指令,关闭相应的第二连接任务。也就是在当前浏览器客户端或直播服务端主动关闭双向长连接时,就关闭相应的第二连接任务,可及时腾出资源。断开指令可由当前浏览器客户端发出(具体可由业务功能模块发出),例如用户退出直播间时浏览器客户端主动关闭与直播服务端的双向长连接,也可由直播服务端发出,例如主播关播时直播服务端主动关闭与浏览器客户端的双向长连接。
71.根据本公开的示例性实施例的连接装置300,连接单元304还可响应于接收到直播服务端反馈的连接确认消息,按照心跳间隔时长向直播服务端定时发送心跳数据;其中,连接确认消息包括心跳间隔时长,或心跳间隔时长为默认值。直播服务端为各种类型的客户端提供服务,往往会接入多种通信协议,以满足不同的通信需求,所以往往会自建心跳机制。websocket虽然具备原生的心跳机制,但该原生的心跳机制属于应用层,浏览器客户端无法对其进行控制。根据本公开的示例性实施例的连接装置300通过专门建立与直播服务端相适应的心跳机制,并由连接单元304按照连接确认消息中的心跳间隔时长或默认的心跳间隔时长来发送心跳数据,能够与直播服务端自建的心跳机制兼容。具体地,若直播服务端反馈的连接确认消息中包括心跳间隔时长,则使用该反馈值,若连接确认消息中没有包括心跳间隔时长,则使用默认值。参照图2,该心跳机制对应于图2中展示的管理模块保持心跳的能力。
72.图4是根据本公开的示例性实施例的电子设备的框图。
73.参照图4,电子设备400包括至少一个存储器401和至少一个处理器402,所述至少一个存储器401中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器402执行时,执行根据本公开的示例性实施例的连接方法。
74.作为示例,电子设备400可以是pc计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备400并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备400还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
75.在电子设备400中,处理器402可包括中央处理器(cpu)、图形处理器(gpu)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模
拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
76.处理器402可运行存储在存储器401中的指令或代码,其中,存储器401还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
77.存储器401可与处理器402集成为一体,例如,将ram或闪存布置在集成电路微处理器等之内。此外,存储器401可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器401和处理器402可在操作上进行耦合,或者可例如通过i/o端口、网络连接等互相通信,使得处理器402能够读取存储在存储器中的文件。
78.此外,电子设备400还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备400的所有组件可经由总线和/或网络而彼此连接。
79.根据本公开的示例性实施例,还可提供一种计算机可读存储介质,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的连接方法。这里的计算机可读存储介质的示例包括:只读存储器(rom)、随机存取可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom)、随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪存、非易失性存储器、cd-rom、cd-r、cd r、cd-rw、cd rw、dvd-rom、dvd-r、dvd r、dvd-rw、dvd rw、dvd-ram、bd-rom、bd-r、bd-r lth、bd-re、蓝光或光盘存储器、硬盘驱动器(hdd)、固态硬盘(ssd)、卡式存储器(诸如,多媒体卡、安全数字(sd)卡或极速数字(xd)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
80.根据本公开的示例性实施例,还可提供一种计算机程序产品,该计算机程序产品包括计算机指令,计算机指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的连接方法。
81.根据本公开的示例性实施例的连接方法、装置、电子设备和计算机可读存储介质,通过配置设定数量和设定条件,并在需要创建新的连接任务,而已建立的连接任务达到设定数量时,关闭满足设定条件的连接任务,能够及时腾出资源创建新的连接任务,实现了连接任务的动态淘汰机制,有助于保证新的连接任务对应的双向长连接能够建立成功,保障了浏览器客户端消息传输的可靠性和稳定性。
82.本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的
权利要求指出。
83.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献