CN109089163B - 弹幕消息分发方法、装置、设备及存储介质 - Google Patents
弹幕消息分发方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109089163B CN109089163B CN201810840298.5A CN201810840298A CN109089163B CN 109089163 B CN109089163 B CN 109089163B CN 201810840298 A CN201810840298 A CN 201810840298A CN 109089163 B CN109089163 B CN 109089163B
- Authority
- CN
- China
- Prior art keywords
- bullet screen
- secondary distributor
- target
- screen message
- message
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/488—Data services, e.g. news ticker
- H04N21/4884—Data services, e.g. news ticker for displaying subtitles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
- H04N21/8166—Monomedia components thereof involving executable data, e.g. software
- H04N21/8173—End-user applications, e.g. Web browser, game
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种弹幕消息分发方法、装置、设备及存储介质。该方法包括:依据待分发弹幕消息确定目标弹幕消息;调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从所述次级分发器对象集合中确定目标次级分发器对象;调用目标次级分发器对象中的第一弹幕分发函数,将所述目标弹幕消息分发至所述目标次级分发器对象,以使所述目标次级分发器对象将所述目标弹幕消息分发至各弹幕消息接收器对象,所述第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得。通过上述技术方案,实现了高效且及时地将待分发弹幕消息分发至音视频播放/直播应用软件中的各个弹幕消息接收器对象。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种弹幕消息分发方法、装置、设备及存储介质。
背景技术
在诸如斗鱼的音视频播放/直播应用软件中,会大量使用弹幕消息。通常,这些弹幕消息是由能够传输及处理弹幕消息的服务器(即弹幕服务器)传输至Android客户端中的音视频播放/直播应用软件,并由应用软件中的弹幕分发模块逐条分发给需要使用弹幕消息的各个弹幕消息接收器对象,如视图对象、业务控制器对象或数据管理器对象等。
但是,当弹幕服务器发送的弹幕消息过多时,现有的弹幕分发模式便会出现弹幕消息分发效率下降,甚至弹幕消息分发出错的情况。
发明内容
本发明实施例提供一种弹幕消息分发方法、装置、设备及存储介质,以实现高效且及时地将待分发弹幕消息分发至音视频播放/直播应用软件中的各个弹幕消息接收器对象。
第一方面,本发明实施例提供了一种弹幕消息分发方法,该方法包括:
依据待分发弹幕消息确定目标弹幕消息;
调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从所述次级分发器对象集合中确定目标次级分发器对象;
调用目标次级分发器对象中的第一弹幕分发函数,将所述目标弹幕消息分发至所述目标次级分发器对象,以使所述目标次级分发器对象将所述目标弹幕消息分发至各弹幕消息接收器对象,其中,所述第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得。
第二方面,本发明实施例还提供了一种弹幕消息分发装置,该装置包括:
目标弹幕消息确定模块,用于依据待分发弹幕消息确定目标弹幕消息;
目标次级分发器对象确定模块,用于调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从所述次级分发器对象集合中确定目标次级分发器对象;
弹幕消息分发模块,用于调用目标次级分发器对象中的第一弹幕分发函数,将所述目标弹幕消息分发至所述目标次级分发器对象,以使所述目标次级分发器对象将所述目标弹幕消息分发至各弹幕消息接收器对象,其中,所述第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得。
第三方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的弹幕消息分发方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的弹幕消息分发方法。
本发明实施例通过设置一个顶级分发器对象和预设数量个次级分发器对象,将音视频播放/直播应用软件中的弹幕分发模式设计为顶级分发器对象-次级分发器对象-弹幕消息接收器对象的多层级分发模式,使得多个次级分发器对象同时分担单个弹幕分发器对象的弹幕消息分发压力,从而能够更加及时地将弹幕消息进行分发,为提高弹幕消息分发效率提供基础。通过依据待分发弹幕消息确定目标弹幕消息,能够获得可以进行分发操作的弹幕消息。通过调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从所述次级分发器对象集合中确定目标次级分发器对象,能够快速地从多个次级分发器对象中确定出承担目标弹幕消息分发的次级分发器对象。通过调用目标次级分发器对象中继承自第一弹幕分发协议的第一弹幕分发函数,将所述目标弹幕消息分发至所述目标次级分发器对象,以使所述目标次级分发器对象将所述目标弹幕消息分发至各弹幕消息接收器对象,能够将目标弹幕消息由顶级分发器对象分发至目标次级分发器对象,并进一步分发至各弹幕消息接收器对象,减少了弹幕消息分发过程中的分发阻塞,实现了待分发弹幕消息的高效分发。
附图说明
图1是本发明实施例一中的一种弹幕消息分发方法的流程图;
图2是本发明实施例二中的一种弹幕消息分发方法的流程图;
图3是本发明实施例三中的一种弹幕消息分发装置的结构示意图;
图4是本发明实施例四中的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
本实施例提供的弹幕消息分发方法,可适用于Android客户端中的音视频播放/直播应用软件,将接收到的待分发弹幕消息分发至各个弹幕消息接收器对象。该方法可以由弹幕消息分发装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在安装有音视频播放/直播应用软件的设备中,例如典型的是用户终端设备,例如手机、平板电脑或智能电视等。参见图1,本实施例的方法具体包括如下步骤:
S110、依据待分发弹幕消息确定目标弹幕消息。
其中,待分发弹幕消息是指需要分发至次级分发器对象的弹幕消息。这里的次级分发器对象是指对弹幕消息进行分发处理的下一层级的弹幕分发器的实例化对象。与次级分发器对象相对设置的便是顶级分发器对象,其是指对弹幕消息进行分发处理的上一层级的弹幕分发器的实例化对象。目标弹幕消息是指符合弹幕分发规则的弹幕消息,弹幕分发规则是预先设定的进行弹幕消息分发的规则,例如可以是弹幕消息的数据类型、数据结构和数据大小等中的任一个或任意组合。
具体地,顶级分发器对象从弹幕服务器中获取待分发弹幕消息,具体的获取方式可以是Android客户端中的音视频播放/直播应用软件向弹幕服务器发送数据获取请求,弹幕服务器被动响应数据获取请求来获取;优选是通过Android客户端中预先建立的弹幕监听器接口对象及弹幕监听器接口对象中作为回调函数的消息传输函数,接收弹幕服务器中的弹幕库对象回调消息传输函数发送的弹幕消息,其中,弹幕监听器接口对象用于监听弹幕服务器中的弹幕库对象。也就是说,Android客户端从弹幕服务器获取弹幕消息是通过在Android客户端中设置弹幕监听器接口对象,对弹幕服务器中的弹幕库对象进行监听,为弹幕服务器发送弹幕消息至Android客户端提供接口,且弹幕监听器中包含回调函数onMessage(String type,Message msg),为弹幕服务器发送弹幕消息至Android客户端提供调用函数指针。当弹幕消息到达弹幕服务器时,触发弹幕监听事件,则弹幕服务器主动调用回调函数onMessage,即弹幕服务器通过回调函数的函数指针,将弹幕消息由弹幕监听器接口对象发送至Android客户端,Android客户端中的顶级分发器对象则可以及时地、被动地接收弹幕消息。上述弹幕监听器和回调函数便是Android客户端中设置的弹幕消息获取协议和协议函数。上述回调函数的函数参数type为字符串string类型的弹幕消息标识,msg为消息Message类型的弹幕消息体。这里,弹幕消息标识是指能够标识弹幕消息的字符,其可以是数字、字母、符号及上述各种字符的任意组合,该弹幕消息标识应当是一条弹幕消息的唯一的、全局的标识。弹幕消息体是指弹幕消息的承载者,其内包含具体地弹幕消息内容。
顶级分发器对象从弹幕服务器所获得的待分发弹幕消息通常是经过加密处理及数据封装等通信处理的消息,故在获取待分发弹幕消息之后,顶级分发器对象对其进行诸如解密和数据类型转换等处理,以获得目标弹幕消息。
S120、调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从次级分发器对象集合中确定目标次级分发器对象。
其中,集合获取函数是顶级分发器对象中预先定义的,用于获取一个集合的函数。次级分发器对象集合是指存储各个次级分发器对象的集合,其是一个全局集合。由于顶级分发器对象需将目标弹幕消息分发至次级分发器对象,而本发明实施例中的顶级分发器对象和次级分发器对象分别布设在不同的功能模块中,故两者之间的通信需要通过预先定义的跨模块组件间通信协议,即后续将说明的第一弹幕分发协议IMessage。那么,次级分发器对象集合中存储的各个次级分发器对象应当是继承了第一弹幕分发协议的协议对象,其既是次级分发器对象,又是协议对象,这样才可实现目标弹幕消息的分发。可以理解,次级分发器对象集合的数据类型应当是协议对象IMessage类型。
示例性地,次级分发器对象集合通过如下步骤预先获取:依据第一弹幕分发协议创建次级分发器对象集合;在创建各次级分发器对象之后,各次级分发器对象通过协议继承关键字继承第一弹幕分发协议,获得各次级分发器协议对象;以各次级分发器协议对象为函数输入参数,分别调用次级分发器对象集合的集合元素添加函数,将各次级分发器协议对象添加至次级分发器对象集合。具体实施时,根据第一弹幕分发协议IMessage对应的协议对象IMessage,创建集合元素数据类型为协议对象IMessage类型的次级分发器对象集合mSecondDanmuSenderList,并对该次级分发器对象集合进行初始化,例如利用Android系统的动态数组类ArrayList,对次级分发器对象集合mSecondDanmuSenderList进行初始化,其代码实现可以是List<IMessage>mSecondDanmuSenderList=new ArrayList<IMessage>()。需要注意的是,本实施例中的次级分发器对象的数量是预先设定的,即设置有预设数量的次级分发器对象。那么在初始化次级分发器对象集合时,其集合容量应当是可以根据上述预设数量直接设定的。之后需要将次级分发器对象添加至初始化后的次级分发器对象集合,添加时机是各个次级分发器对象被实例化之后,在每个次级分发器对象的生命周期内,先通过Java语言中规定的进行接口继承的关键字implements(即协议继承关键字),使得各个次级分发器对象mSecondSender继承第一弹幕分发协议成为协议对象(即次级分发器协议对象)。然后,逐次调用次级分发器对象集合的集合元素添加函数,即mSecondDanmuSenderList.add(mSecondSender),将各个次级分发器协议对象添加至次级分发器对象集合,生成包含了多个次级分发器协议对象的集合。应当理解的是,当次级分发器对象销毁时,需要将其相应的协议对象从次级分发器对象集合中删除,即在销毁次级分发器对象之前,以次级分发器协议对象为函数输入参数,调用集合元素删除函数mSecondDanmuSenderList.remove(mSecondSender),将次级分发器协议对象从次级分发器对象集合中删除。
预设选择规则是预先设定的,用于从集合中选取对象的规则。预设选择规则可以是随机选择规则、顺序选择规则及基于负载均衡机制的均衡选择规则等。目标次级分发器对象是指目标弹幕消息对应的次级分发器对象,即目标弹幕消息需要分发至该目标次级分发器对象,其是从次级分发器对象集合中获得,故也是一个协议对象。
具体地,顶级分发器对象调用集合获取函数getSecondDanmuSender,获得全局的次级分发器对象集合。之后,顶级分发器对象根据预设选择规则,从次级分发器对象集合中确定出一个次级分发器对象,作为目标次级分发器对象。
示例性地,依据预设选择规则从次级分发器对象集合中确定目标次级分发器对象包括:按照随机选择规则或顺序选择规则,从次级分发器对象集合中获取一个次级分发器协议对象,作为目标次级分发器对象。其中,随机选择规则是指随机选取对象的规则。顺序选择规则是指按照集合中元素的排序顺序挨个选取对象的规则。具体实施时,顶级分发器对象从次级分发器对象集合中随机选取一个次级分发器对象作为目标次级分发器对象。这样能够更加快速地确定出目标次级分发器对象,进而进一步提高弹幕消息的分发效率。或者,顶级分发器对象按照次级分发器对象集合中各个次级分发器对象的存储顺序,每次挨个选择一个次级分发器对象作为目标次级分发器对象。在这种情况下,需要一种维护集合中元素选择顺序的策略,以确保每次选取的对象是上一次选取对象的下一个顺序性对象。这样能够均匀地将目标弹幕消息分发至各个次级分发器对象,从而避免某一个或某几个次级分发器对象承担过多的弹幕消息分发任务,造成弹幕消息分发阻塞。
S130、调用目标次级分发器对象中的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象,以使目标次级分发器对象将目标弹幕消息分发至各弹幕消息接收器对象。
其中,第一弹幕分发函数是用于进行弹幕消息分发的函数,其为第一弹幕分发协议的内部函数。示例性地,第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得。也就是说,次级分发器对象继承第一弹幕分发协议之后,除了其具有协议对象的属性之外,还获得了第一弹幕分发协议中的第一弹幕分发函数。弹幕消息接收器对象是指音视频播放/直播应用软件中需要接收弹幕消息的组件对象,例如可以是用于弹幕消息显示的视图对象,也可以是用于对弹幕消息进行数据处理的业务控制器对象,还可以是对弹幕消息进行存储或传输的数据管理器对象。
示例性地,第一弹幕分发协议通过如下方式预先定义:依据待分发弹幕消息的弹幕消息获取协议,定义第一弹幕分发协议及第一弹幕分发协议中的第一弹幕分发函数。其中,弹幕消息获取协议是指Android客户端获取待分发弹幕消息时所遵循的通信协议,根据S110中所说明的,这里的弹幕消息获取协议是弹幕监听器及其内部所包含的回调函数。为了实现将目标弹幕消息由顶级分发器对象的直达式分发至各个次级分发器对象,本发明实施例中在各个次级分发器对象实例化之前预先进行了第一弹幕分发协议的实现。更进一步地,为了实现对弹幕消息的透传式分发,将第一弹幕分发协议确定为透传分发协议,具体可以是通过与Android客户端中弹幕消息获取协议采用一致的协议内部函数的形式来实现透传式分发的。具体实施时,根据待分发弹幕消息的弹幕消息获取协议及其内部函数onMessage(String type,Message msg),定义第一弹幕分发协议IMessage及其内部函数——第一弹幕分发函数public void onMessage(String type,Message msg)。由此可以理解,上述所有继承第一弹幕分发函数的说明中,次级分发器对象对第一弹幕分发函数的继承实现过程便是回调第一弹幕分发函数。需要说明的是,第一弹幕分发协议优选在次级分发器类中定义,这样各个次级分发器对象可以便捷且快速地实现协议继承,进一步提高弹幕消息分发协议。另外,这样的设置便于开发人员查看协议定义,能够提高程序开发效率。
具体地,顶级弹幕分发器对象将目标弹幕消息对应的弹幕消息标识type和弹幕消息体msg作为函数输入参数,通过调用目标次级分发器对象内部的第一弹幕分发函数onMessage(String type,Message msg),将目标弹幕消息分发至目标次级分发器对象中。之后,目标次级分发器对象再将该目标弹幕消息分发至其对应的各个弹幕消息接收器对象中。
示例性地,目标次级分发器对象将目标弹幕消息分发至各弹幕消息接收器对象包括:目标次级分发器对象调用各弹幕消息接收器对象中的第二弹幕分发函数,将目标弹幕消息分发至各弹幕消息接收器对象。其中,第二弹幕分发函数与第一弹幕分发函数对应一致,只是第二弹幕分发函数是用于将弹幕消息从次级分发器对象分发至弹幕消息接收器对象的函数,其是第二弹幕分发协议的内部函数。第二弹幕分发函数为弹幕消息接收器对象继承预先定义的第二弹幕分发协议而获得。第二弹幕分发协议是次级分发器对象和弹幕消息接收器对象之间进行组件间通信的通信协议,其同样是一个透传式协议,故第二弹幕分发协议与第一弹幕分发协议对应一致。即第二弹幕分发协议通过如下方式预先定义:依据第一弹幕分发协议,定义第二弹幕分发协议及第二弹幕分发协议中的第二弹幕分发函数。
本实施例的技术方案,通过设置一个顶级分发器对象和多个次级分发器对象,将音视频播放/直播应用软件中的弹幕分发模式设计为顶级分发器对象-次级分发器对象-弹幕消息接收器对象的多层级分发模式,使得多个次级分发器对象同时分担单个弹幕分发器对象的弹幕消息分发压力,为提高弹幕消息分发效率提供基础。通过依据待分发弹幕消息确定目标弹幕消息,能够获得可以进行分发操作的弹幕消息。通过调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从次级分发器对象集合中确定目标次级分发器对象,能够快速地从多个次级分发器对象中确定出承担目标弹幕消息分发的次级分发器对象。通过调用目标次级分发器对象中继承自第一弹幕分发协议的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象,以使目标次级分发器对象将目标弹幕消息分发至各弹幕消息接收器对象,能够将目标弹幕消息由顶级分发器对象分发至目标次级分发器对象,并进一步分发至各弹幕消息接收器对象,减少了弹幕消息分发过程中的分发阻塞,实现了待分发弹幕消息的高效分发。
实施例二
本实施例在上述实施例一的基础上,对“依据待分发弹幕消息确定目标弹幕消息”进行了进一步优化。在此基础上,也可以进一步对“按照顺序选择规则从次级分发器对象集合中获取一个次级分发器协议对象,作为目标次级分发器对象”进行优化。在上述基础上,还可以进一步增加次级分发器对象集合的索引值更新的步骤。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的弹幕消息分发方法包括:
S201、依据待分发弹幕消息确定目标消息标识。
具体地,根据实施例一的说明可知,待分发弹幕消息是string类型的消息,那么顶级分发器对象通过字符串拆分等方式解析待分发弹幕消息,获得待分发弹幕消息对应的弹幕消息标识type(即目标消息标识)。
S202、依据目标消息标识,通过开关语句Switch,确定目标消息标识对应的初始JavaBean对象。
其中,初始JavaBean对象是指实例化的JavaBean对象,其已经构建内部属性字段和相应的属性处理函数,但是还未填充具体的字段属性。需要说明的是,每个初始JavaBean对象的属性字段和属性处理函数都是不同的,故每个弹幕消息重构为JavaBean对象时,都需选择对应的初始JavaBean对象。
在执行本步骤的操作之前,预先构建不同弹幕消息对应的多个初始JavaBean对象,且将不同弹幕消息的弹幕消息标识对应于各个初始JavaBean对象,即针对每一个弹幕消息标识type构建一个对应的初始JavaBean对象,具体则可以是利用开关语句Switch,将每个type和对应的初始JavaBean对象赋值操作设置为一个case分支,代码实现大致为:case type:对应的初始JavaBean对象赋值操作。具体实施时,根据待分发弹幕消息的目标消息标识,确定其对应的开关语句Switch中的case语句,该case语句对应的初始JavaBean对象变为目标消息标识对应的初始JavaBean对象。
S203、依据初始JavaBean对象重构待分发弹幕消息,获得目标JavaBean对象,作为目标弹幕消息。
具体地,对字符串类型的待分发弹幕消息进行解析,获得各个属性字段及其字段值,之后执行S202中确定的对应case语句中的初始JavaBean对象赋值操作,即调用初始JavaBean对象中的属性写入函数set*,*代表具体的属性字段,将各个字段值赋值给初始JavaBean对象中的相应属性字段,从而完成对初始JavaBean对象的赋值,获得目标JavaBean对象,作为目标弹幕消息。需要说明的是,Message类是所有Bean类的父类,故目标JavaBean对象可以直接作为onMessage函数的弹幕消息体msg的实参进行传输。
S204、在次级分发器对象集合为数组结构或列表结构时,获取次级分发器对象集合的当前索引值。
其中,索引值是集合中元素的位置标识。当前索引值是指当前待分发弹幕消息分发操作过程中对应的索引值。
具体地,当次级分发器对象集合为数据结构或列表结构时,次级分发器对象集合便是一个线性的有序集合。此时,为了实现各个次级分发器对象均匀执行分发任务,本实施例中采用了顺序选择规则来确定目标次级分发器对象。顺序选择规则的具体实现是通过一个独立的普通变量来存储次级分发器对象集合的索引值,以此来维护每次弹幕消息分发时次级分发器对象的选择顺序。具体实施时,顶级分发器对象获取上述独立变量的值,作为次级分发器对象集合的当前索引值index。
S205、从次级分发器对象集合中获取当前索引值对应的次级分发器协议对象,作为目标次级分发器对象。
具体地,顶级分发器对象以当前索引值为函数输入参数,通过元素获取函数get(index),获取次级分发器对象集合中位置索引为index的次级分发器协议对象,作为目标次级分发器对象。
S206、调用目标次级分发器对象中的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象。
具体地,顶级分发器对象分别将目标弹幕消息对应的目标消息标识type和目标JavaBean对象作为第一弹幕分发函数onMessage的函数输入参数,即onMessage(type,JavaBean),调用目标次级分发器对象内部的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象中。
S207、将当前索引值累加1获得临时索引值,并比较临时索引值与集合临界值。
其中,集合临界值是指集合中最后一个元素对应的位置标识。由于编程中位置标识是从0开始编号,故集合临界值可以理解为集合元素个数减1所得的值。
具体地,在顶级分发器对象将目标弹幕消息分发至目标次级分发器对象之后,需要变更当前索引值,以便下一次弹幕消息分发时,能够将其分发至顺序的下一个次级分发器对象。具体则是将当前索引值累加1,即index+1,作为具有过渡性质的临时索引值。考虑到索引值超出集合范围会出错,本实施例中顶级分发器对象在获得次级分发器对象集合后,调用元素个数获取函数count,获取次级分发器对象集合的元素个数secondNum,并根据元素个数确定集合临界值secondNum-1。然后,比较临时索引值与集合临界值,以便判断临时索引值是否越界。之后执行S208或S209。
S208、在临时索引值小于或等于集合临界值时,将当前索引值更新为临时索引值。
具体地,若比较结果中,临时索引值小于或等于集合临界值,说明临时索引值未超出次级分发器对象集合的位置标识范围,则直接将获得的临时索引值替换为当前索引值。
S209、在临时索引值大于集合临界值时,将当前索引值更新为起始索引值。
其中,起始索引值是集合中的第一个元素的位置标识,其通常为0。
具体地,若比较结果中,临时索引值大于集合临界值,说明临时索引值超出次级分发器对象集合的位置标识范围,次级分发器集合中的各个次级分发器已经被遍历完毕,需要从第一个次级分发器对象重新开始。此时需要将起始索引值替换为当前索引值。
S210、目标次级分发器对象将目标弹幕消息分发至各弹幕消息接收器对象。
需要说明的是,此处不限定S207与S210的执行顺序,其可以按序执行,也可以先执行S210而后执行S207,还可以是同时执行S207与S210。
本实施例的技术方案,通过目标消息标识和开关语句switch,能够快速确定待分发弹幕消息对应的初始JavaBean对象,从而快速获得具有高效的数据管理功能的JavaBean类型的目标弹幕消息,进一步提高弹幕消息分发效率。通过获取当前索引值的方式,更加简便且快速地确定目标次级分发器对象,更进一步提高弹幕消息分发效率。通过比较临时索引值和集合临界值,并在临时索引值小于或等于集合临界值时,将当前索引值更新为临时索引值;在临时索引值大于集合临界值时,将当前索引值更新为起始索引值。能够更加准确地控制当前索引值的变更,从而确保目标次级分发器对象获取的准确性,提高弹幕消息分发的正确率。通过在将目标弹幕消息分发至目标次级分发器对象之后,变更当前索引值,能够保证在目标弹幕消息分发至目标次级分发器对象的操作失败时,当前索引值仍然能够正确地对应于目标次级分发器对象,以便重新进行目标弹幕消息的分发,提高了弹幕消息分发过程中的容错性。
以下是本发明实施例提供的弹幕消息分发装置的实施例,该装置与上述各实施例的弹幕消息分发方法属于同一个发明构思,在弹幕消息分发装置的实施例中未详尽描述的细节内容,可以参考上述弹幕消息分发方法的实施例。
实施例三
本实施例提供一种弹幕消息分发装置,参见图3,该装置具体包括:
目标弹幕消息确定模块310,用于依据待分发弹幕消息确定目标弹幕消息;
目标次级分发器对象确定模块320,用于调用集合获取函数获得次级分发器对象集合,并依据次级分发器对象集合确定目标次级分发器对象;
弹幕消息分发模块330,用于调用目标次级分发器对象中的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象,以使目标次级分发器对象将目标弹幕消息分发至各弹幕消息接收器对象,其中,第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得。
可选地,目标弹幕消息确定模块310具体用于:
依据待分发弹幕消息确定目标消息标识;
依据目标消息标识,通过开关语句Switch,确定目标消息标识对应的初始JavaBean对象;
依据初始JavaBean对象重构待分发弹幕消息,获得目标JavaBean对象,作为目标弹幕消息。
可选地,在上述装置的基础上,该装置还包括集合获取模块,用于通过如下步骤预先获取次级分发器对象集合:
依据第一弹幕分发协议创建次级分发器对象集合;
在创建各次级分发器对象之后,各次级分发器对象通过协议继承关键字继承第一弹幕分发协议,获得各次级分发器协议对象;
以各次级分发器协议对象为函数输入参数,分别调用次级分发器对象集合的集合元素添加函数,将各次级分发器协议对象添加至次级分发器对象集合。
可选地,目标次级分发器对象确定模块320具体用于:
按照随机选择规则或顺序选择规则,从次级分发器对象集合中获取一个次级分发器协议对象,作为目标次级分发器对象。
进一步地,次级分发器对象集合为数组结构或列表结构;
相应地,目标次级分发器对象确定模块320具体用于:
获取次级分发器对象集合的当前索引值;
从次级分发器对象集合中获取当前索引值对应的次级分发器协议对象,作为目标次级分发器对象。
可选地,在上述装置的基础上,该装置还包括索引值变更模块,用于:
在调用目标次级分发器对象中的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象之后,将当前索引值累加1获得临时索引值,并比较临时索引值与集合临界值;
在临时索引值小于或等于集合临界值时,将当前索引值更新为临时索引值;
在临时索引值大于集合临界值时,将当前索引值更新为起始索引值。
可选地,在上述装置的基础上,该装置还包括弹幕分发协议定义模块,用于:
依据待分发弹幕消息的弹幕消息获取协议,定义第一弹幕分发协议及第一弹幕分发协议中的第一弹幕分发函数。
通过本发明实施例三的一种弹幕消息分发装置,实现了高效地将待分发弹幕消息分发至音视频播放/直播应用软件中的各个弹幕消息接收器对象。
本发明实施例所提供的弹幕消息分发装置可执行本发明任意实施例所提供的弹幕消息分发方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述弹幕消息分发装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
实施例四
参见图4,本实施例提供了一种设备400,其包括:一个或多个处理器420;存储装置410,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器420执行,使得一个或多个处理器420实现本发明实施例所提供的弹幕消息分发方法,包括:
依据待分发弹幕消息确定目标弹幕消息;
调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从次级分发器对象集合中确定目标次级分发器对象;
调用目标次级分发器对象中的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象,以使目标次级分发器对象将目标弹幕消息分发至各弹幕消息接收器对象,其中,第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得。
当然,本领域技术人员可以理解,处理器420还可以实现本发明任意实施例所提供的弹幕消息分发方法的技术方案。
图4显示的设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,该设备400包括处理器420、存储装置410、输入装置430和输出装置440;设备中处理器420的数量可以是一个或多个,图4中以一个处理器420为例;设备中的处理器420、存储装置410、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线450连接为例。
存储装置410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的弹幕消息分发方法对应的程序指令/模块(例如,弹幕消息分发装置中的目标弹幕消息确定模块、目标次级分发器对象确定模块和弹幕消息分发模块)。
存储装置410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置430可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏等显示设备。
实施例五
本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种弹幕消息分发方法,该方法包括:
依据待分发弹幕消息确定目标弹幕消息;
调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从次级分发器对象集合中确定目标次级分发器对象;
调用目标次级分发器对象中的第一弹幕分发函数,将目标弹幕消息分发至目标次级分发器对象,以使目标次级分发器对象将目标弹幕消息分发至各弹幕消息接收器对象,其中,第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的弹幕消息分发方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的弹幕消息分发方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种弹幕消息分发方法,其特征在于,包括:
依据待分发弹幕消息确定目标弹幕消息,其中,所述待分发弹幕消息由顶级分发器对象从弹幕服务器中获取,所述顶级分发器对象为对弹幕消息进行分发处理的上一层级的弹幕分发器的实例化对象;
调用集合获取函数获得次级分发器对象集合,并依据预设选择规则从所述次级分发器对象集合中确定目标次级分发器对象,其中,所述次级分发器对象是指对弹幕消息进行分发处理的下一层级的弹幕分发器的实例化对象;
调用目标次级分发器对象中的第一弹幕分发函数,将所述目标弹幕消息分发至所述目标次级分发器对象,以使所述目标次级分发器对象将所述目标弹幕消息分发至各弹幕消息接收器对象,其中,所述第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得,所述目标弹幕消息由所述顶级分发器对象分发至所述目标次级分发器对象。
2.根据权利要求1所述的方法,其特征在于,所述依据待分发弹幕消息确定目标弹幕消息包括:
依据所述待分发弹幕消息确定目标消息标识;
依据所述目标消息标识,通过开关语句Switch,确定所述目标消息标识对应的初始JavaBean对象;
依据所述初始JavaBean对象重构所述待分发弹幕消息,获得目标JavaBean对象,作为所述目标弹幕消息。
3.根据权利要求1所述的方法,其特征在于,所述次级分发器对象集合通过如下步骤预先获取:
依据所述第一弹幕分发协议创建所述次级分发器对象集合;
在创建各所述次级分发器对象之后,各所述次级分发器对象通过协议继承关键字继承所述第一弹幕分发协议,获得各次级分发器协议对象;
以各所述次级分发器协议对象为函数输入参数,分别调用所述次级分发器对象集合的集合元素添加函数,将各所述次级分发器协议对象添加至所述次级分发器对象集合。
4.根据权利要求3所述的方法,其特征在于,所述依据预设选择规则从所述次级分发器对象集合中确定目标次级分发器对象包括:
按照随机选择规则或顺序选择规则,从次级分发器对象集合中获取一个所述次级分发器协议对象,作为所述目标次级分发器对象。
5.根据权利要求4所述的方法,其特征在于,所述次级分发器对象集合为数组结构或列表结构;
所述按照顺序选择规则从次级分发器对象集合中获取一个所述次级分发器协议对象,作为所述目标次级分发器对象包括:
获取所述次级分发器对象集合的当前索引值;
从所述次级分发器对象集合中获取所述当前索引值对应的所述次级分发器协议对象,作为所述目标次级分发器对象。
6.根据权利要求5所述的方法,其特征在于,在所述调用目标次级分发器对象中的第一弹幕分发函数,将所述目标弹幕消息分发至所述目标次级分发器对象之后,还包括:
将当前索引值累加1获得临时索引值,并比较所述临时索引值与集合临界值;
在所述临时索引值小于或等于所述集合临界值时,将当前索引值更新为所述临时索引值;
在所述临时索引值大于所述集合临界值时,将当前索引值更新为起始索引值。
7.根据权利要求1所述的方法,其特征在于,所述第一弹幕分发协议通过如下方式预先定义:
依据所述待分发弹幕消息的弹幕消息获取协议,定义所述第一弹幕分发协议及所述第一弹幕分发协议中的所述第一弹幕分发函数。
8.一种弹幕消息分发装置,其特征在于,包括:
目标弹幕消息确定模块,用于依据待分发弹幕消息确定目标弹幕消息,其中,所述待分发弹幕消息由顶级分发器对象从弹幕服务器中获取,所述顶级分发器对象为对弹幕消息进行分发处理的上一层级的弹幕分发器的实例化对象;
目标次级分发器对象确定模块,用于调用集合获取函数获得次级分发器对象集合,并依据所述次级分发器对象集合确定目标次级分发器对象,其中,所述次级分发器对象是指对弹幕消息进行分发处理的下一层级的弹幕分发器的实例化对象;
弹幕消息分发模块,用于调用目标次级分发器对象中的第一弹幕分发函数,将所述目标弹幕消息分发至所述目标次级分发器对象,以使所述目标次级分发器对象将所述目标弹幕消息分发至各弹幕消息接收器对象,其中,所述第一弹幕分发函数为次级分发器对象继承预先定义的第一弹幕分发协议而获得,所述目标弹幕消息由所述顶级分发器对象分发至所述目标次级分发器对象。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的弹幕消息分发方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的弹幕消息分发方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810840298.5A CN109089163B (zh) | 2018-07-27 | 2018-07-27 | 弹幕消息分发方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810840298.5A CN109089163B (zh) | 2018-07-27 | 2018-07-27 | 弹幕消息分发方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109089163A CN109089163A (zh) | 2018-12-25 |
CN109089163B true CN109089163B (zh) | 2021-05-28 |
Family
ID=64830858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810840298.5A Active CN109089163B (zh) | 2018-07-27 | 2018-07-27 | 弹幕消息分发方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109089163B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256351B (zh) * | 2020-10-26 | 2023-11-17 | 卫宁健康科技集团股份有限公司 | Feign组件的实现方法、微服务调用方法及装置 |
WO2023039824A1 (zh) * | 2021-09-17 | 2023-03-23 | 深圳爱特天翔科技有限公司 | 数据传输方法、终端设备以及计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101540775A (zh) * | 2009-04-30 | 2009-09-23 | 华为技术有限公司 | 内容分发方法、装置与内容分发网络系统 |
CN101860544A (zh) * | 2010-06-08 | 2010-10-13 | 中兴通讯股份有限公司 | 会话启动协议消息的发送系统及方法 |
CN102546461A (zh) * | 2011-12-13 | 2012-07-04 | 中国电子科技集团公司第十五研究所 | 多层级消息中间件系统及其消息转发控制方法和装置 |
CN103546520A (zh) * | 2012-07-17 | 2014-01-29 | 中兴通讯股份有限公司 | 消息分发方法及装置 |
CN107368311A (zh) * | 2017-07-10 | 2017-11-21 | 武汉斗鱼网络科技有限公司 | 一种多Fragment之间的通信方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104618813B (zh) * | 2015-01-20 | 2018-02-13 | 腾讯科技(北京)有限公司 | 弹幕信息处理方法、客户端及服务平台 |
CN106412681B (zh) * | 2015-07-31 | 2019-12-24 | 腾讯科技(深圳)有限公司 | 弹幕视频直播方法及装置 |
-
2018
- 2018-07-27 CN CN201810840298.5A patent/CN109089163B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101540775A (zh) * | 2009-04-30 | 2009-09-23 | 华为技术有限公司 | 内容分发方法、装置与内容分发网络系统 |
CN101860544A (zh) * | 2010-06-08 | 2010-10-13 | 中兴通讯股份有限公司 | 会话启动协议消息的发送系统及方法 |
CN102546461A (zh) * | 2011-12-13 | 2012-07-04 | 中国电子科技集团公司第十五研究所 | 多层级消息中间件系统及其消息转发控制方法和装置 |
CN103546520A (zh) * | 2012-07-17 | 2014-01-29 | 中兴通讯股份有限公司 | 消息分发方法及装置 |
CN107368311A (zh) * | 2017-07-10 | 2017-11-21 | 武汉斗鱼网络科技有限公司 | 一种多Fragment之间的通信方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109089163A (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10409657B2 (en) | Identifiers across application instances | |
CN108536492B (zh) | 一种直播间属性信息获取方法、装置、设备及存储介质 | |
CN108882053B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109089163B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN110324722B (zh) | 直播间中数据的获取方法、装置、设备和存储介质 | |
CN109062650B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109274988B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109101340B (zh) | 弹幕消息的动态分发方法、装置、设备和存储介质 | |
CN109302639B (zh) | 一种弹幕消息的分发方法、装置、终端和存储介质 | |
CN108810633B (zh) | 弹幕消息传输方法、装置、设备及存储介质 | |
US8745681B2 (en) | Set top box resource allocation for executing a widget | |
CN108810645B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109144520B (zh) | Android中不同对象间的信息交互方法、装置、设备和存储介质 | |
CN108924653B (zh) | 弹幕消息分发方法、装置、设备和存储介质 | |
CN113127775B (zh) | 一种页面加载方法、装置、设备和存储介质 | |
CN109005465B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109005468B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109005448B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109947488B (zh) | 通用功能模块的对象初始化方法、装置、设备和存储介质 | |
CN109086115B (zh) | Android动画执行方法、装置、终端及可读介质 | |
CN109309848B (zh) | 基于重试机制的弹幕分发方法、装置、设备及存储介质 | |
CN108810644B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN109413507B (zh) | 弹幕库与直播间引用关系的处理方法、装置、终端和介质 | |
CN109254858B (zh) | 活动窗口的数据共享方法、装置、设备及存储介质 | |
CN109086107B (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 |