一种弹幕服务器连接方法、客户端及可读存储介质与流程

文档序号:18868200发布日期:2019-10-14 18:51阅读:178来源:国知局
一种弹幕服务器连接方法、客户端及可读存储介质与流程

本发明涉及电子技术领域,尤其涉及一种弹幕服务器连接方法、客户端及可读存储介质。



背景技术:

目前,网络直播越来越受到大家的欢迎,直播平台在直播时,观众发送弹幕可以很好的起到和主播进行互动的功能。由于弹幕的数据量非常大以及弹幕的实时性,直播平台的服务器系统将弹幕服务器独立开来,专职负责弹幕信息的收发。独立出弹幕服务器,使用长tcp连接与客户端进行发送弹幕和接收弹幕。而对于tcp连接过程中会出现各种网络问题,如:客户端在不同的网络、网络不可达、某个ip地址链不上、tcp连接的端口被占用、弹幕服务器过负载、dns劫持以及弹幕服务器的容灾等问题等,导致大量的客户端连接不上弹幕服务器。



技术实现要素:

本发明实施例提供了一种弹幕服务器连接方法、客户端及可读存储介质,用于提高客户端连接弹幕服务器的成功率。

第一方面,本发明提供了一种弹幕服务器连接方法,应用于客户端,包括:

在检测到预设应用程序开启弹幕功能的情况下,连接至网关服务器;

获取所述网关服务器发送的第一候选弹幕服务器列表,所述第一候选弹幕服务器列表中包括至少一个弹幕服务器的域名地址;

按第一预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器;

如果所述第一候选弹幕服务器列表中的弹幕服务器均连接失败,获取第二候选弹幕服务器列表,所述第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器;

基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器。

可选的,所述按第一预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器,包括:

从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器进行连接,直至连接成功或所述第一候选弹幕服务器列表中的弹幕服务器均连接失败。

可选的,所述从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器进行连接,包括:

从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器,获取随机选择的弹幕服务器的域名地址;

解析所述域名地址,获取所述随机选择的弹幕服务器的ip地址和端口号;

基于所述随机选择的弹幕服务器的ip地址和端口号,连接所述随机选择的弹幕服务器。

可选的,所述基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器,包括:

从所述第二候选弹幕服务器列表中依次随机选择一个弹幕服务器进行基于http协议的连接,直至连接成功。

可选的,所述基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器,包括:

获取所述第二候选弹幕服务器列表中每个弹幕服务器连接的客户端数量;

从所述第二候选弹幕服务器列表中确定出连接的客户端数量最少的弹幕服务器;

基于http协议,连接所述连接的客户端数量最少的弹幕服务器。

第二方面,本发明实施例提供了一种客户端,包括:

第一连接单元,用于在检测到预设应用程序开启弹幕功能的情况下,连接至网关服务器;

第一获取单元,用于获取所述网关服务器发送的第一候选弹幕服务器列表,所述第一候选弹幕服务器列表中包括至少一个弹幕服务器的域名地址;

第二连接单元,用于按第一预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器;

第二获取单元,用于如果所述第一候选弹幕服务器列表中的弹幕服务器均连接失败,获取第二候选弹幕服务器列表,所述第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器;

第三连接单元,用于基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器。

可选的,所述第二连接单元用于:

从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器进行连接,直至连接成功或所述第一候选弹幕服务器列表中的弹幕服务器均连接失败。

可选的,所述第二连接单元用于:

从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器,获取随机选择的弹幕服务器的域名地址;

解析所述域名地址,获取所述随机选择的弹幕服务器的ip地址和端口号;

基于所述随机选择的弹幕服务器的ip地址和端口号,连接所述随机选择的弹幕服务器。

可选的,所述第三连接单元用于:

从所述第二候选弹幕服务器列表中依次随机选择一个弹幕服务器进行基于http协议的连接,直至连接成功。

可选的,所述第三连接单元用于:

获取所述第二候选弹幕服务器列表中每个弹幕服务器连接的客户端数量;

从所述第二候选弹幕服务器列表中确定出连接的客户端数量最少的弹幕服务器;

基于http协议,连接所述连接的客户端数量最少的弹幕服务器。

第三方面,本发明实施例提供了一种客户端,所述客户端包括处理器所述处理器用于执行存储器中存储的计算机程序时实现如前述第一方面实施例中所述的弹幕服务器连接方法的步骤。

第四方面,本发明实施例提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述第一方面实施例中所述的弹幕服务器连接方法的步骤。

本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:

在本发明实施例的技术方案中,弹幕服务器系统包括网关服务器与弹幕服务器,网关服务器需要完成的功能比较少,客户端可以轻易连接上网关服务器。在客户端开启预设应用程序的弹幕功能情况下,客户端首先连接网关服务器,在接收到网关服务器下发的第一候选弹幕服务器列表后,通过解析第一候选弹幕服务器列表中的域名地址来获取弹幕服务器的ip地址和端口号。由于存在dns被劫持导致获取不到弹幕服务器的ip地址,或者获取到的ip地址也连接不上弹幕服务器的情况。如果第一候选弹幕服务器列表中的弹幕服务器均连接失败,本发明实施例中的技术方案客户端还会获取第二候选弹幕服务器列表,第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器,客户端可直接基于http协议连接第二候选弹幕服务器列表中的弹幕服务器,进而可以有效提高客户端连接弹幕服务器的成功率。

附图说明

图1为本发明第一实施例中的一种弹幕服务器连接方法的流程图;

图2为本发明第二实施例中的客户端的示意图;

图3为本发明第三实施例中的客户端的示意图。

具体实施方式

本发明实施例提供了一种弹幕服务器连接方法、客户端及可读存储介质,用于提高客户端连接弹幕服务器的成功率。该弹幕服务器连接方法应用于客户端,包括:在检测到预设应用程序开启弹幕功能的情况下,连接至网关服务器;获取所述网关服务器发送的第一候选弹幕服务器列表,所述第一候选弹幕服务器列表中包括至少一个弹幕服务器的域名地址;按第一预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器;如果所述第一候选弹幕服务器列表中的弹幕服务器均连接失败,获取第二候选弹幕服务器列表,所述第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器;基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器。

下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

实施例

请参考图1,本发明第一实施例提供一种弹幕服务器连接方法,应用于客户端,该弹幕服务器连接方法包括如下步骤:

s101:在检测到预设应用程序开启弹幕功能的情况下,连接至网关服务器;

s102:获取所述网关服务器发送的第一候选弹幕服务器列表,所述第一候选弹幕服务器列表中包括至少一个弹幕服务器的域名地址;

s103:按第一预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器;

s104:如果所述第一候选弹幕服务器列表中的弹幕服务器均连接失败,获取第二候选弹幕服务器列表,所述第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器;

s105:基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器。

具体的,本实施例中的弹幕服务器连接方法主要应用于安装了预设应用程序的客户端,预设应用程序可以是直播应用程序或视频类的应用程序,当然,还可以是其他具有弹幕功能的应用程序,在此本申请不做限制。进一步,在本实施例中,由于直播应用程序的弹幕信息数量较大,且实时性较高,弹幕服务器系统包括了多个网关服务器与多个弹幕服务器,每个网关服务器连接多个弹幕服务器。客户端的预设应用程序在开启弹幕功能情况下,需要先连接网关服务器,然后通过网关服务器再连接上弹幕服务器。

首先,通过步骤s101,在检测到预设应用程序开启弹幕功能的情况下,连接至网关服务器。网关服务器需要完成的功能比较少,网络负载轻,同一台网关服务器可以支持多个客户端的连接,客户端对于网关服务器连接成功率比较高。在客户端连接网关服务器时,会从php(hypertextpreprocessor,超文本预处理器)服务器通过http(hypertexttransferprotocol,超文本传输协议)请求来拉取候选网关服务器的ip列表,php服务器会依据全网中每个网关服务器的连接客户端负载情况,选择负载比较少的网关服务器的ip地址和端口形成候选网关服务器的ip列表。如:确定客户端连接量小于预设数量的网关服务器的ip地址与端口号添加至候选网关服务器的ip列表。

然后,php服务器将确定出的网关服务器的ip列表下发到客户端中。客户端从php服务器获得网关服务器的ip列表后,采用随机策略,每次随机选择一个ip和端口进行连接,如果连接上,则完成网关服务器的连接步骤,否则再次从网关服务器的ip列表中随机选择剩下的ip和端口进行连接,直到成功连接网关服务器为止。

进而,在连接上网关服务器后,便执行步骤s102,具体的,在本实施例中,客户端会向网关服务器发送连接弹幕服务器的第一连接请求,网关服务器在接收到该请求后,网关服务器会根据每个弹幕服务器的负载情况以及地理位置来确定第一候选弹幕服务器列表中的弹幕服务器。具体的,可以将负载少的且与客户端位置接近的弹幕服务器选入第一候选弹幕服务器列表。考虑到每个客户端所处于的地域性,本实施例首先提供了通过域名(dns)解析来连接弹幕服务器的方式,确定出的第一候选弹幕服务器列表中包括至少一个弹幕服务器的域名地址。在确定出第一候选弹幕服务器列表后,网关服务器将其发送至客户端。

客户端在接收到第一候选弹幕服务器列表后,执行步骤s103,可包括如下步骤:从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器进行连接,直至连接成功或所述第一候选弹幕服务器列表中的弹幕服务器均连接失败。

其中,所述从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器进行连接,包括:从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器,获取随机选择的弹幕服务器的域名地址;解析所述域名地址,获取所述随机选择的弹幕服务器的ip地址和端口号;基于所述随机选择的弹幕服务器的ip地址和端口号,连接所述随机选择的弹幕服务器。

具体的,在本实施例中,客户端在接收到第一候选弹幕服务器列表后,为了尽可能的实现负载均衡,客户端会使用随机策略来连接第一候选弹幕服务器列表中的弹幕服务器。具体的,可以从第一候选弹幕服务器列表中依次随机选择一个弹幕服务器进行连接,直至连接成功或第一候选弹幕服务器列表中的弹幕服务器均连接失败。

在连接随机选择出的弹幕服务器时,客户端获得与之对应的域名地址,通过域名解析器解析出与该域名地址对应的ip地址和端口号,即可基于解析出的ip地址和端口号,连接与之对应的弹幕服务器,在本实施例中,可以随机确定一个弹幕服务器,然后进行域名地址解析,最后基于解析得到的ip地址和端口号连接至对应的弹幕服务器。

当然,本实施例中的方法,还可以直接将第一候选弹幕服务器列表中所有的弹幕服务器的域名地址进行解析,得到该列表中每个弹幕服务器对应的ip地址和端口号,然后随机选择一组ip地址和端口号进行连接。在具体实施过程中,可根据实际需要来确定连接第一候选弹幕服务器列表中的弹幕服务器的方式,在此,本申请不做限制。

当客户端成功连接到一个弹幕服务器时,客户端可与连接的弹幕服务器进行弹幕信息的交互,如果连接失败,客户端会从第一候选弹幕服务器列表中剩下的弹幕服务器中随机选择一个进行连接,直至连接成功。由于存在域名地址被劫持导致客户端解析不出弹幕服务器的ip地址,或者获取到的ip地址也连接不上弹幕服务器的情况,所以,也存在客户端针对第一候选弹幕服务器列表中的弹幕服务器均连接失败的情况。

在第一候选弹幕服务器列表中的弹幕服务器均连接失败的情况下,本实施例中的弹幕服务器连接方法,还提供了基于http(hypertexttransferprotocol,超文本传输协议)的弹幕服务器连接策略。具体的,在第一候选弹幕服务器列表中的弹幕服务器均连接失败的情况下,执行步骤s104。

具体的,在本实施例中,弹幕服务器系统中包含多个弹幕服务器,由于基于tcp/ip协议的服务器连接速度较快,客户端能快速连接上弹幕服务器,所以,大部分的弹幕服务器为基于tcp/ip协议的服务器,有小部分的弹幕服务器为基于http协议的服务器。比如:弹幕服务器系统中包含90个基于tcp/ip协议的弹幕服务器,包含10个基于http协议的弹幕服务器。

当客户端通过域名解析的方式解析出第一候选弹幕服务器列表中的弹幕服务器的ip地址和端口号后,基于解析出的ip地址和端口号连接第一候选弹幕服务器列表中的弹幕服务器,如果域名被劫持或者其他原因导致客户端没有连接上第一候选弹幕服务器列表中的弹幕服务器。此时为了尽可能的保障客户端可以连接上弹幕服务器,客户端会获取第二候选弹幕服务器列表,该第二候选弹幕服务器列表中包括至少一个基于http的弹幕服务器,包括,每个基于http弹幕服务器的超级链接地址。

获取第二候选弹幕服务器列表的方式可基于客户端的请求来获取,比如:在客户端针对第一候选弹幕列表中的弹幕服务器均连接失败的情况下,反馈连接失败信息至网关服务器,网关服务器在接收到连接失败信息后,下发第二候选弹幕服务器列表。

同时,第二候选弹幕服务器列表还可以预先下发至全网各个客户端,比如:在搭建基于http协议的弹幕服务器时便将第二候选弹幕服务器列表发送至全网的客户端。每个客户端本地保存第二候选弹幕服务器列表,在客户端针对第一候选弹幕列表中的弹幕服务器均连接失败的情况下,获取本地保存的第二候选弹幕服务器列表,再通过第二候选弹幕服务器列表种的超级连接地址连接至对应的基于http协议的弹幕服务器。支持通过http的方式来发送和接收弹幕,从而在前述通过域名解析策略连接不上弹幕服务器时,还可以基于http协议连接上基于http协议的弹幕服务器,以确保客户端能够成功连接至弹幕服务器,发送和接收弹幕信息。

进一步,在本实施例中,通过步骤s105,在连接第二弹幕服务器中的基于http的弹幕服务器时,可以采用但不限于以下两种方式:

第一种方式:从基于http协议的弹幕服务器中依次随机选择一个弹幕服务器进行基于http协议的连接,直至连接成功。

具体的,在本实施例中,为了使得弹幕服务器的各个基于http协议的弹幕服务器能够均衡负载压力,客户端也可以使用随机策略来连接基于http协议的弹幕服务器。具体的,可以从基于http协议的弹幕服务器中依次随机选择一个弹幕服务器进行连接,直至连接成功。在本实施例中,基于http协议的弹幕服务器还可以设定最大连接数,如果客户端请求连接基于http协议的弹幕服务器时,如果该弹幕服务器当前连接的客户端数量为设定的最大连接数,则该弹幕服务器会拒绝客户端的连接请求,客户端重新从剩下的基于http协议的弹幕服务器随机选择一个进行连接,直至连接成功。

第二种方式:获取每个基于http协议的弹幕服务器连接的客户端数量;确定出连接的客户端数量最少的弹幕服务器;基于http协议,连接所述连接的客户端数量最少的弹幕服务器。

具体的,在本实施例中,基于http协议的弹幕服务器的超级连接地址是基于客户端的请求通过网关服务器下发至客户端的情况下,网关服务器还会下发每个基于http协议的弹幕服务器在当前时刻连接的客户端数量,这样,在客户端获知每个基于http协议的弹幕服务器在当前时刻连接的客户端数量后,可确定出连接的客户端数量最少的弹幕服务器,再基于http协议,连接该弹幕服务器。这样,可以进一步提高客户端连接弹幕服务器的成功率以及连接速度,提高用户体验。

进一步,在本实施例中,客户端在检测到预设应用程序开启弹幕功能的情况下,由于预设应用程序通常安装在移动客户端,移动客户端的网络状态可能会实时发生变化。所以,还需要根据客户端当前网络连接状态来确定是否进行弹幕服务器连接的操作。具体的,可包括如下步骤:检测获得所述客户端的当前网络连接状态;如果所述当前网络连接状态处于预设网络连接状态,按预设策略连接弹幕服务器,其中,所述预设网络连接状态为无线局域网络连接状态或无线广域网络连接状态;如果所述当前网络连接状态处于非预设网络连接状态,停止连接弹幕服务器。

具体的,在本实施例中,在以下几种情况下会触发客户端检测当网络连接状态。第一种,预设应用程序启动后预设应用程序的弹幕功能开启,且被触发进行视频播放时,客户端检测当网络连接状态。比如:预设应用程序是直播应用程序,当直播应用程序启动后,且该直播应用程序的弹幕功能开启,如果直播应用程序进入第一直播间,此时,客户端会检测当前网络连接状态。第二种,预设应用程序启动后进行视频播放的期间,弹幕功能被开启时,客户端检测当网络连接状态。比如:直播应用程序启动后进入第一直播间观看直播,期间用户开启弹幕功能,此时,客户端会检测当前网络连接状态。第三种,客户端中的预设应用程序运行期间,如果该预设应用程序开启了弹幕功能,客户端可以按预设时间间隔(如5分钟、10分钟等)检测当前网络连接状态。

进而,如果当前网络连接状态处于无线局域网络连接状态(如连接wifi网络)或无线广域网络连接状态(如连接3g/4g网络)等预设网络状态,即可按预设策略连接弹幕服务器。如果当前网络连接状态处于非预设网络连接状态,如:客户端没有连接网络,则停止连接弹幕服务器。对于无网络的情况,如果弹幕服务器没有连接上,则客户端并不会重连,而是等到客户端连接上预设网络处于预设网络连接状态时,再重新连接弹幕服务器。比如:客户端的移动性可能导致客户端的网络状态发生变化,在连接wifi网络情况下,移动至该wifi网络没有覆盖的区域,这样,检测到网络连接状态由预设网络状态切换至非预设网络状态,此时,客户端会中断与弹幕服务器间的连接,在客户端重新连接上wifi网络后,重新连接弹幕服务器。

进一步,在本实施例中,如果当前网络连接状态处于无线广域网络连接状态,输出提示信息用于提醒是否确认连接弹幕服务器;如果接收到针对提示信息的确认信息,按预设策略连接弹幕服务器。

具体的,在本实施例中,如果当前网络连接状态处于无线广域网络连接状态,由于无线广域网络通常需要按流量收费,所以,客户端需要输出提示信息用于提醒是否确认连接弹幕服务器,提示信息可以是语音提醒,文字提醒等,如果接收到用户针对提示信息的确认信息,客户端才会连接弹幕服务器,以避免造成用户不必要的经济开销。

进一步,在本实施例中,如果确定客户端的当前网络连接状态处于预设网络连接状态,还可以进一步考虑网速、客户端的剩余电量、内存占用率等因素来最终决定是否连接弹幕服务器。具体的,可以设定一个或多个预设条件,包括:当前连接的网络的网速大于预设网速,客户端的剩余电量大于预设电量,内存占用率小于预设内存占用率。在满足上述一个或多个预设条件时,确定按预设策略连接弹幕服务器。

进一步,在本实施例中,在确定客户端的当前网络状态处于预设网络状态的情况下,按预设策略连接弹幕服务器的方式可以采用前述的基于域名解析的连接策略以及http连接策略,上述连接方式已经在前述实施例中详细描述,在此,本申请不再赘述。

进一步,需要说明的是,在上述触发客户端检测当前网络连接状态的状况中,如果是上述第三种情况,客户端中的预设应用程序运行期间,如果该预设应用程序开启了弹幕功能,客户端可以按预设时间间隔(如5分钟、10分钟等)检测当前网络连接状态。如果前一次检测的网络连接状态处于非预设网络状态,而在当前时刻的网络连接状态处于预设网络状态,并且当前时刻距上一次成功连接弹幕服务器的时间间隔小于预设时间间隔(如:10分钟、20分钟等),客户端会重新连接弹幕服务器,在连接弹幕服务器时,可以直接连接客户端上一次成功连接的弹幕服务器,如果连接失败,可以重新按照前述实施例中连接弹幕服务器的方式进行弹幕服务器连接。

通过这样的方式,在客户端仅在处于预设网络状态时才会去连接弹幕服务器,可以尽可能的减少cpu的消耗,从而减少耗电量,也减少发热量。

进一步,在本实施例中,如果检测到客户端的网络连接状态由预设网络连接状态变化至非预设网络连接状态,停止连接弹幕服务器。

具体的,客户端需要对网络连接状态进行监控,包括客户端当前是否处于预设网络连接状态,如果检测到客户端的网络连接状态由预设网络连接状态变化至非预设网络连接状态,则客户端并不会重新尝试连接弹幕服务器,而是等到客户端处于预设网络连接状态时才会重试连接弹幕服务器。

进一步,在本实施例中,在客户端按照预设策略连接上弹幕服务器后,还需要监测预设应用程序的前后台运行状态,根据运行状态来进行弹幕服务器连接的调整。具体可通过如下步骤实现:监测预设应用程序的运行状态;如果预设应用程序的运行状态由前台运行状态切换至后台运行状态,停止连接弹幕服务器;如果预设应用程序的运行状态由后台运行状态切换至前台运行状态,重新连接弹幕服务器。

具体的,在本实施例中,当客户端连接上弹幕服务器后完成弹幕信息的收发期间,会监测预设应用程序的运行状态,比如:按预设时间间隔(如5分钟、10分钟等)检查预设应用程序的运行状态,如果预设应用程序处于前台运行状态,客户端继续与连接的弹幕服务器进行弹幕信息的传输,如果预设应用程序的运行状态由前台运行状态切换至后台运行状态,对于直播应用程序来说,退出后台意味着观众已经看不到直播,同时也看不到弹幕,所以,客户端会停止连接弹幕服务器,不会去不断的连接弹幕服务器。而当检测到预设应用程序重新切换至前台运行时,会重新连接弹幕服务器。

进一步,在本实施例中,还可以设定一个等待时长(如5分钟、10分钟等),当预设应用程序切换至后台运行时,如果处于后台运行的时长到达等待时长,客户端中断与弹幕服务器间的连接,在预设应用程序后台运行的时长还未到达该等待时长期间,客户端会维持与弹幕服务器间的连接,这样,当预设应用程序在较短时间内切换回前台运行状态时,客户端可以及时收发弹幕信息。当预设应用程序处于后台运行状态较长时间后,客户端会自动中断与弹幕服务器间的连接,以避免在预设应用程序后台运行时由于连接弹幕服务器造成额外热量、占用客户端的cpu以及耗费电量等问题。在后台运行状态的预设应用程序重新切换至前台运行时,如果在后台运行时中断了客户端与弹幕服务器间的连接,此时,可以直接连接客户端上一次成功连接的弹幕服务器,如果连接失败,可以重新按照前述实施例中连接弹幕服务器的方式进行弹幕服务器连接,在此,本申请不做赘述。

进一步,在本实施例中,由于客户端连接网关服务器以及弹幕服务器均是基于tcp/ip协议,由于tcp/ip的特性,任何人一旦知道服务器的ip地址和端口号,均可以进行连接。为了防止不法客户端的恶意攻击,提高弹幕服务器系统的安全性,本实施例中的方法,在客户端连接弹幕服务器过程中,需要对客户端的身份进行鉴权,具体的,弹幕服务器系统包括多个网关服务器和多个弹幕服务器,由前述实施例中的内容和可知,客户端在连接弹幕服务器过程中,需要线连接至网关服务器,然后通过网关服务器再连接至对应的弹幕服务器。所以,在连接网关服务器和弹幕服务器时均需要对客户端身份进行鉴权,鉴权过程如下:

网关服务器在接收到客户端发送的第一连接请求的情况下,获取客户端发送的第一待验证信息和第一身份信息;

网关服务器基第一身份信息与第一预设密钥,生成第一验证信息;

如果第一待验证信息与第一验证信息匹配,网关服务器响应第一连接请求,建立与客户端的连接,向客户端发送待连接的弹幕服务器信息;

弹幕信息服务器在接收到客户端发送的第二连接请求的情况下,获取客户端发送的第二待验证信息和第二身份信息,其中,弹幕服务器为客户端基于待连接的弹幕服务器信息确定连接的弹幕服务器,第二连接请求为连接上网关服务器后向弹幕服务器发送的连接请求;

弹幕服务器基于第二身份信息与第二预设密钥,生成第二验证信息;

如果第二待验证信息与第二验证信息匹配,弹幕服务器响应第二连接请求。

具体的,在本实施例中,客户端在检测到预设应用程序开启弹幕功能的情况下,客户端在通过前述实施例中的方式确定出连接至的网关服务器时,向该网关服务器发送的第一连接请求,第一待验证信息和第一身份信息。如果客户端为合法客户端,该客户端会预先接收到网关服务器预先发送的第一密钥,进而基于第一密钥和第一身份信息,该客户端可生成第一待验证信息供网关服务器验证,在本实施例中,第一身份信息包括该客户端的版本号信息、客户端类型信息、客户端的设备标识和发送所述第一连接请求的第一时间戳信息中任意一种或多种组合。

客户端在连接网关服务器时,会有客户端的版本号信息version、客户端类型信息clienttype、客户端的设备唯一id(即设备标识)、当前连接的时间戳信息time。将这些信息拼接到一起经过加密后再计算其md5值从而得到鉴权的key值,该key值即为第一待验证信息。此key值依赖于时间和客户端信息,所以每个客户端每个时刻计算出来的值都是变化的,从而提高其被伪造的门槛。具体实现如下:

通过命令encryptdata1=aes.encrypt(version+clienttype+id+time1,aeskey1)生成第一加密数据,其中,aes.encrypt则是aes(advancedencryptionstandard,高级加密标准)加密算法的接口,aeskey1则是采用aes加密算法使用的key值,即为网关服务器预先发送给合法客户端的第一密钥,网关服务器和合法客户端使用同样的值。最终得到加密后的encryptdata1结果,该encryptdata1为客户端采用aes加密算法生成的第一加密数据。

然后,通过命令key1=md5.create(encryptdata1)生成第一待验证信息,上述命令通过调用md5算法从而得到第一待验证信息key1。

客户端在连接网关服务器时,会携带上报第一待验证信息key1以及第一身份信息。网关服务器在接收到该客户端上报的信息后,采用同样的方式,基于第一身份信息与第一密钥,采用同样的加密算法生成第一验证信息key2。沿用上述示例,网关服务器也基于客户端的版本号信息version、客户端类型信息clienttype、客户端的设备唯一id(即设备标识)、当前连接的时间戳信息time1,采用aes加密算法生成第一加密数据,然后通过md5加密算法计算出第一验证信息key2。

进而,如果客户端为合法客户端,网关服务器生成的第一验证信息key2与合法客户端上报的第一待验证信息key2一致,可以确定匹配成功,这样,客户端就可通过网关服务器的验证,网关服务器响应客户端的连接请求,建立与客户端的连接。网关服务器即可向客户端发送待连接的弹幕服务器信息,比如前述实施例中发送第一候选弹幕服务器列表和第二候候选弹幕服务器列表的过程,在此,本申请不做赘述。

进一步,在客户端通过网关服务器发送的待连接的弹幕服务器信息连接弹幕服务器时,连接至的弹幕服务器还需要对该客户端进行进一步的验证。具体过程与网关服务器鉴权过程类似。

具体的,客户端在确定出连接至的弹幕服务器时,通过命令encryptdata2=aes.encrypt(version+clienttype+id+time2,aeskey2)生成第二加密数据,其中,aes.encrypt则是aes加密算法的接口,aeskey2则是采用aes加密算法使用的key值,即为弹幕服务器预先发送给合法客户端的第二密钥,弹幕服务器和合法客户端使用同样的值。最终得到加密后的encryptdata2结果,该encryptdata2为客户端采用aes加密算法生成的第二加密数据。

然后,通过命令key3=md5.create(encryptdata2)生成第二待验证信息,上述命令通过调用md5算法从而得到第二待验证信息key3。

客户端在连接网关服务器时,会携带上报第二待验证信息key3以及第二身份信息。弹幕服务器在接收到该客户端上报的信息后,采用同样的方式,基于第二身份信息与第二密钥,采用同样的加密算法生成第二验证信息key4。沿用上述示例,弹幕服务器也基于客户端的版本号信息version、客户端类型信息clienttype、客户端的设备唯一id(即设备标识)、当前连接的时间戳信息time2,采用aes加密算法生成第二加密数据,然后通过md5加密算法计算出第二验证信息key4。

进而,如果客户端为合法客户端,弹幕服务器生成的第二验证信息key4与合法客户端上报的第二待验证信息key3一致,可以确定匹配成功,这样,客户端就可通过弹幕服务器的验证,弹幕服务器响应客户端的连接请求,建立与客户端的连接。

进一步,在本实施例中,为了提高客户端成功连接弹幕服务器的速度,本实施例中的方法,预设应用程序是直播平台的情况下,还可以通过如下步骤实现:

在检测到所述直播平台开启弹幕功能且所述直播平台在进入第一直播间情况下,连接至网关服务器;

获取所述网关服务器发送的第一候选弹幕服务器列表;

获取与所述第一直播间对应的弹幕服务器历史连接记录,其中,所述弹幕服务器历史连接记录包括所述直播平台在第一预设时间范围内进入所述第一直播间期间连接弹幕服务器的记录;

基于所述弹幕服务器历史连接记录,按预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器。

具体的,在本实施例中,以下几种情况会触发客户端连接的弹幕服务器:第一种,直播平台启动后,如果直播平台开启弹幕功能,此时用户点击进入第一直播间,会触发客户端连接弹幕服务器。第二种,直播平台启动后,用户点击进入第一直播间,用户在观看第一直播间的期间开启弹幕功能,会触发客户端连接弹幕服务器。

进而,客户端在连接弹幕服务器时,首先需要连接至网关服务器,连接网关服务器的过程已经在前述实施例中详细阐述,在此,本申请不做赘述。

进一步,在本实施例中,在客户端连接至网关服务器之前,在所述直播平台每次进入所述第一直播间连接弹幕服务器情况下,如果连接成功,记录与所述第一直播间对应的所述弹幕服务器的连接成功记录,如果连接失败,记录与所述第一直播间对应的所述弹幕服务器的连接失败记录,以形成与所述第一直播间对应的弹幕服务器历史连接记录。

具体的,客户端会记录直播平台每次进入所述第一直播间连接弹幕服务器的记录,包括连接成功记录和连接失败记录。直播平台在开启弹幕功能情况下,每次进入第一直播间均会连接弹幕服务器,按照前述弹幕服务器连接方式,会从候选列表中选择弹幕服务器进行连接,直至连接成功。比如:在时刻1进入第一直播间时成功连接弹幕服务器1,会记录该次成功连接的记录,包括第一直播间的id、成功连接标识(用于表明该次连接成功,可以以“1”表示)、成功连接所消耗的时长、连接时刻、连接成功的弹幕服务器id、ip地址及端口号等信息。在时刻2进入第一直播间时连接弹幕服务器2失败,会记录该次失败连接的记录,包括第一直播间的id、失败连接标识(用于表明该次连接失败,可以以“0”表示)、连接时刻、连接失败的弹幕服务器id、ip地址及端口号等信息。这样,就可以形成与第一直播间对应的弹幕服务器历史连接记录。

进而,在接收到第一候选弹幕服务器列表后,可从与第一直播间对应的弹幕服务器历史连接记录中筛选出第一预设时间范围内进入第一直播间期间连接弹幕服务器的记录。比如:筛选出距当前时刻最接近的24小时内的与第一直播间对应的弹幕服务器历史连接记录。基于上述记录的方式,可基于第一直播间id与连接时刻快速筛选到结果。

进而,可基于第一预设时间范围内进入第一直播间期间连接弹幕服务器的记录,按预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器,具体可通过如下步骤实现:

基于所述弹幕服务器历史连接记录,获得所述第一候选弹幕服务器列表中每个弹幕服务器在所述第一预设时间范围内连接成功记录与连接失败记录;

基于所述第一候选弹幕服务器列表中每个弹幕服务器在所述第一预设时间范围内连接成功记录与连接失败记录,获得每个弹幕服务器的连接成功率;

按成功率由高至低的顺序连接所述第一候选弹幕服务器列表中的弹幕服务器,直至连接成功。

具体的,第一候选弹幕服务器列表包括多个弹幕服务器,基于弹幕服务器历史连接记录,可以获得第一候选弹幕服务器列表中每个弹幕服务器在第一预设时间范围内连接成功记录与连接失败记录。比如:第一候选弹幕服务器列表包括弹幕服务器1、弹幕服务器2与弹幕服务器3,基于弹幕服务器历史连接记录,可获得在距当前时刻最近的24小时内与直播间1对应的成功以及失败连接弹幕服务器1的ip地址1的记录,其中,成功连接次数为n1,失败连接的次数为n2。在距当前时刻最近的24小时内与直播间1对应的成功以及失败连接弹幕服务器2的ip地址2的记录,其中,成功连接次数为n3,失败连接的次数为n4。在距当前时刻最近的24小时内与直播间1对应的成功以及失败连接弹幕服务器3的ip地址3的记录,其中,成功连接次数为n5,失败连接的次数为n6。

通过历史连接记录,可以确定出客户端连接弹幕服务器1的成功率为n1/(n1+n2+n3+n4+n5+n6),客户端连接弹幕服务器2的成功率为n3/(n1+n2+n3+n4+n5+n6),客户端连接弹幕服务器3的成功率为n5/(n1+n2+n3+n4+n5+n6)。当然,还可以以其他方式定义连接每个弹幕服务器的成功率,比如:继续沿用上述示例,定义客户端连接弹幕服务器1的成功率为n1-n2,客户端连接弹幕服务器2的成功率为n3-n4,客户端连接弹幕服务器3的成功率为n5-n6。在具体实施过程中,客户端连接各个弹幕服务器的成功率可根据实际需要进行定义,在此,本申请不做限制。进而,可按连接成功率由高至低排序,按连接成功率由高至低的顺序依次连接第一候选弹幕服务器列表中的弹幕服务器,直至连接成功。

由于第一候选弹幕服务器列表中包括的是域名地址,本实施例中的方法可采用前述域名解析的方式进行连接,比如:继续沿用上述示例,如果成功率由高至低排列的是弹幕服务器1、弹幕服务器3、弹幕服务器2。首先连接弹幕服务器1,解析与弹幕服务器1对应的ip地址和端口号,然后基于解析出的ip地址和端口号进行连接。在弹幕服务器1连接失败时,再连接弹幕服务器3,在弹幕服务器3连接失败时,再连接弹幕服务器2。

进一步,如果第一候选弹幕服务器列表中的弹幕服务器均连接失败,如前述实施例中可知,还可以连接基于http协议的弹幕服务器。连接基于http协议的弹幕服务器的方式已在前述实施例中详细描述,在此,本申请不做赘述。

进一步,在本实施例中,在预设应用程序为直播平台,还可以在用户进入直播平台时预测该用户可能要进入的直播间,进而,在进入该直播间之前预先连接好对应的弹幕服务器,这样,就能在进入直播间时及时进行弹幕信息的收发。具体的,可通过如下步骤实现:

在检测到所述客户端启动所述直播平台且所述直播平台开启弹幕功能情况下,获取登录所述直播平台的用户关注的至少一个直播间;

从所述至少一个直播间确定出第一直播间,获取与所述第一直播间的对应的第一候选弹幕服务器列表;

按预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器,以使得所述直播平台在进入所述第一直播间之前成功连接弹幕服务器。

具体的,在本实施例中,用户在通过账号密码登录直播平台后,首先是进入直播平台的主功能界面,此时,客户端会获取到该用户关注的至少一个直播间,由于用户关注直播间,表明用户对该直播间的直播视频感兴趣,所以,用户极有可能会进入关注的直播间。由此,客户端会基于用户的历史观看记录或者直播间的信息,确定出一个用户最有可能进入的第一直播间,具体的,确定第一直播间的方式可通过以下几种方式实现:

第一种:获取所述至少一个直播间中每个直播间对应的直播时间;从所述至少一个直播间中确定出直播时间距当前时刻最接近的直播间作为第一直播间。

具体的,在本实施例中,当客户端获取到用户关注的多个直播间后,由于每个直播间通常具有固定的播放时间,所以,在确定用户最有可能进入的第一直播间时,可以从用户关注的多个直播间中确定出播放时间距当前时刻最接近直播间为第一直播间。进一步,如果确定出的第一直播间的播放时间距当前时刻的时间间隔大于预设时间间隔(比如10分钟、20分钟等),此时可放弃预先连接弹幕服务器的策略,仅当确定出的第一直播间的播放时间距当前时刻的时间间隔小于或等于预设时间间隔,才会执行后续的步骤。

第二种:获取在预设时间范围内所述用户观看所述至少一个直播间的历史观看记录;基于所述历史观看记录,从所述至少一个直播间中确定出观看次数最多的直播间作为第一直播间。

具体的,在本实施例中,当客户端获取到用户关注的多个直播间后,可以查看在预设时间范围内用户观看关注的多个直播间的历史观看记录,比如:在距当前时刻最接近的一周内观看关注的多个直播间的记录,进而,可以从用户关注的多个直播间确定出观看次数最多的直播间作为第一直播间。进一步,如果确定出的第一直播间的播放时间距当前时刻的时间间隔大于预设时间间隔(比如10分钟、20分钟等),此时,可以挑选出观看次数由多至少排序后排在第二的直播间作为第一直播间,如果此时确定出的第一直播间的播放时间距当前时刻的时间间隔小于或等于预设时间间隔,确定该次确定出的第一直播间无误,执行后续步骤。

进一步,在确定出第一直播间后,即可按照前述实施例中的方式,先连接至网关服务器,再通过网关服务器连接至弹幕服务器。在网关服务器下发第一候选弹幕服务器列表时,需要第一候选弹幕服务器列表中的弹幕服务器与第一直播间对应,具体的,每个直播间均有可连接至的弹幕服务器,客户端在像网关服务器发送连接请求时,可将第一直播间的标识信息发送至网关服务器,网关服务器即可根据第一直播间的标识信息快速确定出与之对应的第一候选弹幕服务器列表。

进一步,在本实施例中,还可以基于历史连接记录来进行连接,比如:可以确定出第一直播间对应的最近一次成功连接的弹幕服务器进行连接,或者从最近一周内第一直播间对应的弹幕服务器连接记录中确定出成功连接次数最多的弹幕服务器进行连接,在具体实施过程中,可根据实际需要来制定连接的策略,在此,本申请不做限制。由于客户端在直播平台进入第一直播间之前预先连接至了对应的弹幕服务器,在实际进入第一直播间时,就可以及时显示弹幕信息与发送弹幕信息。

进一步,在本实施例中,还提供了用于维护上述弹幕服务器系统中弹幕服务器的方式,包括:

获取多个客户端中每个客户端每次连接弹幕服务器时反馈的弹幕服务器连接信息;

按预设时间间隔统计所述多个弹幕服务器中每个弹幕服务器在预设时间范围内的连接信息;

基于所述每个弹幕服务器在预设时间范围内的连接信息,从所述多个弹幕服务器中确定出无效弹幕服务器;

对所述无效弹幕服务器进行修复。

具体的,在本实施例中,客户端在每次连接弹幕服务器时,均会进行弹幕服务器连接记录,比如:如果客户端成功连接弹幕服务器,会记录该次成功连接的记录,包括客户端的id、成功连接标识(用于表明该次连接成功,可以以“1”表示)、成功连接所消耗的时长、连接时刻、连接成功的弹幕服务器id、ip地址及端口号等信息,如果预设应用程序为直播应用程序,还会记录此时所处的直播间的id。如果客户端连接弹幕服务器失败,会记录该次失败连接的记录,包括客户端的id、失败连接标识(用于表明该次连接失败,可以以“0”表示)、连接时刻、连接失败的弹幕服务器id、ip地址及端口号等信息,如果预设应用程序为直播应用程序,还会记录此时所处的直播间的id。

进而,全网的每个客户端在每次连接弹幕服务器时,进行弹幕服务器连接记录,并将记录保存在本地以及上传至弹幕服务器系统,可以是统管弹幕服务器系统中所有弹幕服务器的信息收集设备,客户端可通过http请求携带弹幕服务器连接信息。进而,当信息收集设备接收到各个客户端上报的连接信息后,将每个连接归类至对应的弹幕服务器,比如:客户端1在时刻1成功连接弹幕服务器1的成功连接记录1,以及客户端2在时刻2成功连接弹幕服务器1的成功连接记录2,则将成功连接记录1与成功连接记录2归类至弹幕服务器1的连接记录。这样,弹幕服务器系统可以形成每个弹幕服务器的连接记录。

进而,本实施例中的方法,可以按预设时间间隔(1小时、3小时、5小时等)统计在预设时间范围内每个弹幕服务器的连接信息,包括每个弹幕服务器在所述预设时间范围内的连接成功次数和连接失败次数,比如:每隔5小时统计在距当前时刻最接近的5小时内每个弹幕服务器对应的连接成功次数和连接失败次数。

进而,可以基于所述每个弹幕服务器在预设时间范围内的连接信息,从所述多个弹幕服务器中确定出无效弹幕服务器,具体的,可通过如下步骤实现:

基于每个弹幕服务器在所述预设时间范围内的连接成功次数和连接失败次数,确定每个弹幕服务器的连接成功率;确定连接成功率小于预设连接成功率的弹幕服务器为无效弹幕服务器。

具体的,在本实施例中,在获得每个弹幕服务器在预设时间范围内的成功连接次数与失败连接次数后,即可确定每个弹幕服务器的连接成功率,具体的,连接成功率为成功连接次数与总连接次数之商,总连接次数为成功连接次数与失败连接次数之和。比如:弹幕服务器1在预设时间范围内的成功连接次数为n1,失败连接次数为n2,弹幕服务器1的连接成功率为n1/(n1+n2)。当然,还可以采用其他方式来定义连接成功率,在此,本申请不做限制。

进而,在确定每个弹幕服务器对应的连接成功率后,即可确定出连接成功率小于预设连接成功率的弹幕服务器为无效弹幕服务器。具体的,在本实施例中,预设时间间隔、预设时间单位以及预设连接成功率均可根据实际需要进行设定,在此,本申请不做限制。

进一步,在本实施了中,还可以通过其他方式确定无效弹幕服务器,比如:确定连续失败连接的次数大于预设次数的弹幕服务器为无效弹幕服务器。确定无效弹幕服务器的方式可根据实际需要进行设定,本申请不做限制。

进而,在确定出无效弹幕服务器后,弹幕服务器系统还会将确定出的无效弹幕服务器的标识发送至每个客户端,以使得客户端在连接弹幕服务器时屏蔽无效弹幕服务器,仅连接有效的弹幕服务器,提高连接的速度。

进一步,客户端在本地也会记录每次弹幕服务器连接的相关信息,如果针对第一弹幕服务器,连接成功率小于预设成功率,或连续失败连接次数大于预设次数,客户端也会确认该第一弹幕服务器为无效弹幕服务器,然后,客户端可以向弹幕服务器系统直接上报第一弹幕服务器为无效弹幕服务器的信息,弹幕服务器系统在接收到该信息后,将第一弹幕服务器确定为无效弹幕服务器。客户端在进行连接时,也会屏蔽该第一弹幕服务器。

进而,通过上述方式确定出无效弹幕服务器后,弹幕服务器系统还会修复无效弹幕服务器,具体的,修复对应的域名地址、ip地址和端口等。在修复完成后,会将无效弹幕服务器的相关弹幕连接信息进行初始化,并且,会下发通知至客户端,以使得客户端将修复后的无效弹幕服务器的相关记录初始化,在后续连接时,即无需屏蔽修复后的弹幕服务器。

进一步,由于在进行弹幕服务器连接时,如前述实施例可知,网关服务器需要在接收到客户端的连接请求后发送候选弹幕服务器列表,包括第一候选弹幕服务器列表,在确定候选弹幕服务器列表中的弹幕服务器时,由于针对每个弹幕服务器每次成功连接弹幕服务器时,对应的弹幕服务器连接信息中还包括连接时长,为了使得客户端能更快地连接上弹幕服务器,所以,本实施例中的方法,还可以通过如下方式确定候选弹幕器服务器列表中的弹幕服务器:

基于每个弹幕服务器在所述预设时间范围内的每次连接时的连接时长,确定成功连接该弹幕服务器的平均连接时长;在接收到客户端连接弹幕服务器的连接请求情况下,基于每个弹幕服务器的平均连接时长,确定候选弹幕器服务器列表;将所述候选弹幕器服务器列表发送至所述客户端,以使得所述客户端基于所述候选弹幕器服务器连接弹幕服务器。

其中,所述基于每个弹幕服务器的平均连接时长,确定候选弹幕器服务器列表,包括:确定平均连接时长小于预设时长的弹幕服务器为候选弹幕器服务器列表中的服务器。

具体的,在本实施例中,客户端每次成功连接弹幕服务器时,会有对应的连接信息,包括成功连接至弹幕服务器所用的连接时长,所以,弹幕服务器系统可以获得在预设时间范围内每个弹幕服务器被成功连接对应的平均连接时长。比如:在1小时内,客户端1成功连接弹幕服务器1的时长为t1,客户端2成功连接弹幕服务器1的时长为t2,客户端3成功连接弹幕服务器1的时长为t3,则在1小时内,针对弹幕服务器1的平均连接时长为(t1+t2+t3)/3。进而,在确定候选弹幕器服务器列表时,可选择平均连接时长小于预设时长的弹幕服务器为候选弹幕器服务器列表中的服务器。当然,在确定候选弹幕器服务器列表时,还需要综合考虑弹幕服务器的负载情况以及端口占用情况,或者其它信息,在具体实施过程中,确定候选弹幕器服务器列表的方式可根据实际需要进行设定,在此本申请不做限制。

进而,弹幕服务器系统将确定出的候选弹幕器服务器列表后,将其发送至客户端,客户端基于接收到的候选弹幕器服务器列表进行弹幕服务器连接,具体实现方式已在前述实施例中详细阐述,在此本申请不做限制。

请参见图2,本发明的第二实施例提供了一种客户端,包括:

第一连接单元201,用于在检测到预设应用程序开启弹幕功能的情况下,连接至网关服务器;

第一获取单元202,用于获取所述网关服务器发送的第一候选弹幕服务器列表,所述第一候选弹幕服务器列表中包括至少一个弹幕服务器的域名地址;

第二连接单元203,用于按第一预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器;

第二获取单元204,用于如果所述第一候选弹幕服务器列表中的弹幕服务器均连接失败,获取第二候选弹幕服务器列表,所述第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器;

第三连接单元205,用于基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器。

进一步,所述第二连接单元用于:

从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器进行连接,直至连接成功或所述第一候选弹幕服务器列表中的弹幕服务器均连接失败。

进一步,所述第二连接单元用于:

从所述第一候选弹幕服务器列表中依次随机选择一个弹幕服务器,获取随机选择的弹幕服务器的域名地址;

解析所述域名地址,获取所述随机选择的弹幕服务器的ip地址和端口号;

基于所述随机选择的弹幕服务器的ip地址和端口号,连接所述随机选择的弹幕服务器。

进一步,所述第三连接单元用于:

从所述第二候选弹幕服务器列表中依次随机选择一个弹幕服务器进行基于http协议的连接,直至连接成功。

进一步,所述第三连接单元用于:

获取所述第二候选弹幕服务器列表中每个弹幕服务器连接的客户端数量;

从所述第二候选弹幕服务器列表中确定出连接的客户端数量最少的弹幕服务器;

基于http协议,连接所述连接的客户端数量最少的弹幕服务器。

请参见图3,本发明的第四实施例提供了一种客户端,包括:处理器301、存储器302以及存储在所述存储器中并可在所述处理器上运行的计算机程序,例如第一实施例中弹幕服务器连接方法对应的程序。所述处理器执行所述计算机程序时实现上述第一实施例中弹幕服务器连接方法中的各步骤。或者,所述处理器执行所述计算机程序时实现上述第二实施例的客户端中各模块/单元的功能。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机装置中的执行过程。例如,所述计算机程序可以被分割成第一连接单元、第一获取单元、第二连接单元、第二获取单元、第三连接单元的功能,各单元具体功能如下:

第一连接单元,用于在检测到预设应用程序开启弹幕功能的情况下,连接至网关服务器;

第一获取单元,用于获取所述网关服务器发送的第一候选弹幕服务器列表,所述第一候选弹幕服务器列表中包括至少一个弹幕服务器的域名地址;

第二连接单元,用于按第一预设策略连接所述第一候选弹幕服务器列表中的弹幕服务器;

第二获取单元,用于如果所述第一候选弹幕服务器列表中的弹幕服务器均连接失败,获取第二候选弹幕服务器列表,所述第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器;

第三连接单元,用于基于http协议,按第二预设策略连接所述第二候选弹幕服务器列表中的弹幕服务器。

所述服务器可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图3仅仅是计算机装置的示例,并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器还可以包括输入输出设备、网络接入设备、总线等。

所称处理器301可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

所述存储器302可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本发明第四实施例提供了一种计算机可读存储介质,其上存储有计算机程序,本发明第三实施例中的所述客户端集成的功能单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述第一实施例中的弹幕服务器连接方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

在本发明实施例的技术方案中,弹幕服务器系统包括网关服务器与弹幕服务器,网关服务器需要完成的功能比较少,客户端可以轻易连接上网关服务器。在客户端开启预设应用程序的弹幕功能情况下,客户端首先连接网关服务器,在接收到网关服务器下发的第一候选弹幕服务器列表后,通过解析第一候选弹幕服务器列表中的域名地址来获取弹幕服务器的ip地址和端口号。由于存在dns被劫持导致获取不到弹幕服务器的ip地址,或者获取到的ip地址也连接不上弹幕服务器的情况。如果第一候选弹幕服务器列表中的弹幕服务器均连接失败,本发明实施例中的技术方案客户端还会获取第二候选弹幕服务器列表,第二候选弹幕服务器列表中包括至少一个基于http协议的弹幕服务器,客户端可直接基于http协议连接第二候选弹幕服务器列表中的弹幕服务器,进而可以有效提高客户端连接弹幕服务器的成功率。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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