弹幕消息分发方法、装置、设备及存储介质与流程

文档序号:16278580发布日期:2018-12-14 22:44阅读:164来源:国知局
弹幕消息分发方法、装置、设备及存储介质与流程

本发明实施例涉及计算机技术,尤其涉及一种弹幕消息分发方法、装置、设备及存储介质。

背景技术

在诸如斗鱼的音视频播放/直播应用软件中,会大量使用弹幕消息。通常,这些弹幕消息是由音视频播放/直播应用软件逐条分发给需要使用弹幕消息的各个消息接收器对象,如视图对象、业务控制器对象或数据管理器对象等。

以视图对象为例,对于安装于android系统的音视频播放/直播应用软件,其向各个视图对象分发弹幕消息的方式是,按照视图层级的引用关系链,逐层地将弹幕消息传递至目标视图对象。参见图1,如果一个位于第三视图层104中的视图需要获取到弹幕消息101,那么该弹幕消息101需要按照引用关系链,先传递至第一视图层102,再由第一视图层102传递至第二视图层103,并最终由第二视图层103再传递至第三视图层104,使得弹幕消息的分发过程复杂,耗时长,效率低。并且在上述过程中,即便第一视图层102和第二视图层103中的视图对象不需要该弹幕消息,其也必须接收并传递该弹幕消息,无疑会造成系统资源的浪费。另外,上述弹幕消息分发操作是实时触发的,即接收到新的弹幕消息时触发执行弹幕消息分发。如果接收弹幕消息的视图对象中有正在处理的弹幕消息,那么该视图对象就需要同时处理多条弹幕消息,会使得视图对象内部的业务逻辑复杂化,容易引入多线程问题。

总之,现有的弹幕消息在音视频播放/直播应用软件中的分发方式存在分发过程复杂,分发效率低以及容易引起弹幕消息接收器对象处理性能不稳定的问题。



技术实现要素:

本发明实施例提供一种弹幕消息分发方法、装置、设备和存储介质,以实现弹幕消息的直达式分发,简化弹幕分发器对象的消息分发逻辑,提高弹幕消息分发效率。

第一方面,本发明实施例提供了一种弹幕消息分发方法,包括:

弹幕分发器对象依据待分发弹幕消息,确定消息接收器对象;

所述弹幕分发器对象调用所述消息接收器对象中的弹幕分发函数,将所述待分发弹幕消息分发至所述消息接收器对象,其中,所述弹幕分发函数为所述消息接收器对象继承预先定义的弹幕分发协议而获得;

所述消息接收器对象依据消息处理标识和消息列表,将所述待分发弹幕消息缓存至所述消息列表或对所述待分发弹幕消息进行设定处理。

第二方面,本发明实施例还提供了一种弹幕消息分发装置,该装置包括:

弹幕分发器和消息接收器,所述弹幕分发器包括对象确定模块和消息分发模块;

所述对象确定模块用于依据待分发弹幕消息,确定消息接收器对象;

所述消息分发模块用于调用所述消息接收器对象中的弹幕分发函数,将所述待分发弹幕消息分发至所述消息接收器对象,其中,所述弹幕分发函数为所述消息接收器对象继承预先定义的弹幕分发协议而获得;

所述消息接收器,用于依据消息处理标识和消息列表,将所述待分发弹幕消息缓存至所述消息列表或对所述待分发弹幕消息进行设定处理。

第三方面,本发明实施例还提供了一种设备,该设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的弹幕消息分发方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的弹幕消息分发方法。

本发明实施例通过弹幕分发器对象调用继承了弹幕分发协议的消息接收器对象中的弹幕分发函数,将待分发弹幕消息实时发送至消息接收器对象,实现了将弹幕消息直达式分发至消息接收器对象,简化了弹幕消息的分发过程,提高了弹幕消息的分发效率和分发时效性。通过在消息接收器对象内部维护缓存弹幕消息的消息列表,简化了弹幕分发器对象内部的业务实现逻辑,能够进一步提高弹幕分发器对象的弹幕分发效率;同时能够减少消息接收器对象内部的多线程,提高消息接收器对象的性能稳定性。通过消息接收器对象中消息处理标识的设置,能够提高消息接收器对象处理弹幕消息的时效性。

附图说明

图1是现有技术中弹幕消息分发的过程示意图;

图2是本发明实施例一中的一种弹幕消息分发方法的流程图;

图3是本发明实施例一中的弹幕消息分发的过程示意图;

图4是本发明实施例二中的一种弹幕消息分发方法的流程图;

图5是本发明实施例三中的一种弹幕消息分发装置的结构示意图;

图6是本发明实施例四中的一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

本实施例提供的弹幕消息分发方法,可适用于android客户端中的音视频播放/直播应用软件将接收到的待分发弹幕消息,分发至应用软件内与待分发弹幕消息相对应的各个消息接收器对象,尤其适用于消息分发速度大于消息处理速度的情况。该方法可以由弹幕消息分发装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在安装有音视频播放/直播应用软件的设备中,例如典型的是用户终端设备,例如手机、平板电脑或智能电视等。参见图2,本实施例的方法具体包括如下步骤:

s110、弹幕分发器对象依据待分发弹幕消息,确定消息接收器对象。

其中,弹幕分发器是指用于进行弹幕消息分发的弹幕分发模块,该模块中为实现弹幕消息分发操作而定义了弹幕分发器类,而弹幕分发器对象则是弹幕分发器类的一个实例,其是弹幕消息分发操作的具体执行者。消息接收器对象是指音视频播放/直播应用软件中需要接收待分发弹幕消息,且满足直达式接收弹幕消息条件的组件对象,例如可以是用于弹幕消息显示的视图对象,也可以是用于对弹幕消息进行数据处理的业务控制器对象,还可以是对弹幕消息进行存储或传输的数据管理器对象。上述直达式接收弹幕消息的条件将在后续进行说明。这里的消息接收器对象的数量为至少一个,也就是说一个待分发弹幕消息可以对应于多个消息接收器对象。

具体地,弹幕分发器对象先从存储并处理弹幕消息的弹幕服务器中获取待分发弹幕消息。具体的获取方式可以是android客户端中的音视频播放/直播应用软件向弹幕服务器发送数据获取请求,弹幕服务器被动响应数据获取请求来获取;优选是通过android客户端中预先建立的弹幕监听器接口对象及弹幕监听器接口对象中作为回调函数的消息传输函数,接收弹幕服务器中的弹幕库对象回调消息传输函数发送的弹幕消息,其中,弹幕监听器接口对象用于监听弹幕服务器中的弹幕库对象。也就是说,android客户端从弹幕服务器获取弹幕消息是通过在android客户端中设置弹幕监听器接口对象,对弹幕服务器中的弹幕库对象进行监听,为弹幕服务器发送弹幕消息至android客户端提供接口,且弹幕监听器中包含回调函数onmessage(stringtype,messagemsg),为弹幕服务器发送弹幕消息至android客户端提供调用函数指针。当弹幕消息到达弹幕服务器时,触发弹幕监听事件,则弹幕服务器主动调用回调函数onmessage,即弹幕服务器通过回调函数的函数指针,将弹幕消息由弹幕监听器接口对象发送至android客户端,android客户端中的弹幕分发器对象则可以及时地、被动地接收弹幕消息。上述弹幕监听器和回调函数便是android客户端中设置的弹幕消息获取协议和协议函数。上述回调函数的函数参数type为字符串string类型的消息标识,msg为消息message类型的消息体。这里,消息标识是指能够标识弹幕消息的字符,其可以是数字、字母、符号及上述各种字符的任意组合,该消息标识应当是一条弹幕消息的唯一的、全局的标识。消息体是指弹幕消息的承载者,其内包含具体地弹幕消息内容。

消息接收器对象的获取,则是将音视频播放/直播应用软件中的各个组件对象对应的可接收的弹幕消息与待分发弹幕消息进行对比,以确定出与待分发弹幕消息对应的至少一个组件对象,作为消息接收器对象。弹幕分发器对象获取了消息接收器对象,意味着弹幕分发器对象持有了消息接收器对象的引用关系,后续可以基于该引用关系进行待分发弹幕消息的分发。

示例性地,弹幕分发器对象依据待分发弹幕消息,确定消息接收器对象包括:弹幕分发器对象依据待分发弹幕消息确定目标消息标识,并依据目标消息标识确定消息接收器标识;弹幕分发器对象依据消息接收器标识,从接收器对象列表中获取消息接收器对象。

其中,目标消息标识是指待分发弹幕消息对应的消息标识。消息接收器标识是指区分各个消息接收器对象的标识,例如可以是消息接收器对象的全称或简称等。接收器对象列表是指存储所有消息接收器对象的列表,其是弹幕分发器对象持有消息接收器对象的引用关系的表现形式,例如某个消息接收器对象存储至消息接收器对象列表中,就意味着弹幕分发器对象持有了该消息接收器对象的引用关系。接收器对象列表的维护是一个动态过程,例如可以是:当消息接收器对象被加载/创建时,在其对应的生命周期起始函数oncreated中,通过消息接收器对象调用实例判断关键字instanceof,判断消息接收器对象继承了弹幕分发协议时,将其添加至接收器对象列表;当消息接收器对象被销毁时,则在其对应的生命周期结束函数ondeatch中,将其从接收器对象列表中删除。这样可以有效节省系统内存。

具体地,每一个消息接收器对象都有其可接收的至少一个弹幕消息,也就是说每个消息接收器对象和对应的各个弹幕消息之间有映射关系存在。基于该映射关系,便可以确定一个弹幕消息对应的各个消息接收器对象。为了便于管理上述映射关系,且减少存储空间,本实施例中以消息标识与消息接收器标识构建上述映射关系。具体实施时,弹幕分发器对象采用诸如字符串拆分等方式解析所获得的字符串类型的待分发弹幕消息,以获得待分发弹幕消息的目标消息标识type。然后,根据目标消息标识type和上述映射关系,确定出其对应的至少一个消息接收器标识senderid。之后,以消息接收器标识senderid为关键词,在接收器对象列表中获取消息接收器对象。例如调用接收器对象列表的元素判断函数contains(senderid),查询接收器对象列表中是否包含消息接收器标识senderid对应的消息接收器对象sender。若包含,则从接收器对象列表中获取该消息接收器对象,例如调用接收器对象列表的元素获取函数get(sender)获取消息接收器对象。

s120、弹幕分发器对象调用消息接收器对象中的弹幕分发函数,将待分发弹幕消息分发至消息接收器对象。

其中,弹幕分发函数是用于进行弹幕消息分发的函数,其为弹幕分发协议的内部函数。弹幕分发协议是音视频播放/直播应用软件中预先定义的,弹幕分发器对象进行弹幕分发时所遵循的组件间通信协议。示例性地,弹幕分发函数为消息接收器对象继承预先定义的弹幕分发协议而获得。如果消息接收器对象继承了定义的弹幕分发协议,意味着消息接收器对象持有了弹幕分发协议接口及其内部函数,这样,消息接收器对象就被注册至弹幕分发器对象所在的弹幕分发总线中,在弹幕分发器对象和各个消息接收器对象之间也就建立了消息传输通道,且具备了实现弹幕消息透传式传输的函数,后续的弹幕消息就可以基于该消息传输通道和分发函数被直达式分发。详细的弹幕分发协议及弹幕分发函数的定义及继承将在后续进行说明。

具体地,针对s110中确定的至少一个消息接收器对象中的每一个消息接收器对象,均执行本步骤的操作,且执行流程可以是串行执行,也可以是并行执行,本发明实施例中以一个消息接收器对象为例进行说明。弹幕分发器对象将解析后的待分发弹幕消息对应的目标消息标识type和消息message类型的消息体msg作为函数输入参数,通过消息接收器对象调用其内部的弹幕分发函数onmessage(stringtype,messagemsg),将待分发弹幕消息分发至消息接收器对象中。

示例性地,在弹幕分发器对象调用消息接收器对象中的弹幕分发函数,将待分发弹幕消息分发至消息接收器对象之前,还包括:依据弹幕消息获取协议,定义弹幕分发协议及弹幕分发协议中的弹幕分发函数,其中,弹幕分发协议为具有公有权限修饰符的接口协议,弹幕分发函数具有公有权限修饰符;消息接收器对象通过协议继承关键字,继承弹幕分发协议,以获得弹幕分发函数。

其中,弹幕消息获取协议是指android客户端从弹幕服务器获取弹幕消息时所遵循的通信协议,根据s110中所说明的,这里的弹幕消息获取协议是弹幕监听器接口对象及其内部所包含的回调函数。协议继承关键字是java语言中规定的进行协议继承的关键字。

具体地,为了实现弹幕分发器对象的直达式弹幕分发,本发明实施例中预先进行了弹幕分发协议的实现。更进一步地,为了实现对弹幕消息的透传式分发,本发明实施例中的弹幕分发协议为透传分发协议。弹幕分发协议是通过与android客户端中弹幕消息获取协议采用一致的协议内部函数的形式来实现透传式分发的。具体实施时,根据弹幕消息获取协议及其内部函数onmessage(stringtype,messagemsg),定义具有公有权限修饰符public的接口类型interface的弹幕分发协议imessage及其内部函数——弹幕分发函数publicvoidonmessage(stringtype,messagemsg)。定义为公有权限是为了便于其他类对该弹幕分发协议及弹幕分发函数进行访问。之后,所有的消息接收器对象均通过协议继承关键字implements,实现对弹幕分发协议的继承,以获得弹幕分发函数。

s130、消息接收器对象依据消息处理标识和消息列表,将待分发弹幕消息缓存至消息列表或对待分发弹幕消息进行设定处理。

其中,消息处理标识是指表征消息接收器对象对弹幕消息处理状态的标识,该标识可以是字母、数字、符号及上述任意组合。消息处理标识可以包括弹幕消息处理完成的完成标识,例如state_end,以及弹幕消息未处理完成的未完成标识,例如state_on;未完成标识具体可以包含弹幕消息开始处理的开始标识,例如state_start,和弹幕消息正在处理中的正在处理标识,例如state_hand。消息列表是指存储已接收但未处理的弹幕消息(即缓存弹幕消息)的集合,其设置在消息接收器对象中,且数据结构是线性顺序结构,例如其数据类型可以是堆栈或数组,优选是具有先进先出特性的队列,这样设置的目的是为了保证弹幕消息分发过程中弹幕消息的顺序性及缓存弹幕消息顺序性存取的便捷性。设定处理是指预先设定的弹幕消息处理操作,例如可以是显示、编辑或渲染等,其可以与消息接收器对象的类型相对应。

具体地,消息接收器对象在接收到待分发弹幕消息之后,根据其内部的消息处理标识和消息列表,确定对待分发弹幕消息的操作,如将待分发弹幕消息存储至消息列表中,作为消息接收器对象中的缓存弹幕消息;或者是直接消费掉该待分发弹幕消息,即对待分发弹幕消息进行设定处理。

参见图3,通过本发明实施例中的弹幕消息分发方法,弹幕消息301可以直接通过弹幕分发器302发送至需要接收弹幕消息的视图中,即位于第三视图层305中的视图,而无需经过中间的第一视图层303和第二视图层304。

本实施例的技术方案,通过弹幕分发器对象调用继承了弹幕分发协议的消息接收器对象中的弹幕分发函数,将待分发弹幕消息实时发送至消息接收器对象,实现了将弹幕消息直达式分发至消息接收器对象,简化了弹幕消息的分发过程,提高了弹幕消息的分发效率和分发时效性。通过在消息接收器对象内部维护缓存弹幕消息的消息列表,简化了弹幕分发器对象内部的业务实现逻辑,能够进一步提高弹幕分发器对象的弹幕分发效率;同时能够减少消息接收器对象内部的多线程,提高消息接收器对象的性能稳定性。通过消息接收器对象中消息处理标识的设置,能够提高消息接收器对象处理弹幕消息的时效性。。

实施例二

本实施例在上述实施例一的基础上,对“消息接收器对象依据消息处理标识和消息列表,将待分发弹幕消息缓存至消息列表或对待分发弹幕消息进行设定处理”进行了进一步优化。在此基础上,还可以进一步增加缓存弹幕消息的处理步骤。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图4,本实施例提供的弹幕消息分发方法包括:

s210、弹幕分发器对象依据待分发弹幕消息,确定消息接收器对象。

s220、弹幕分发器对象调用消息接收器对象中的弹幕分发函数,将待分发弹幕消息分发至消息接收器对象。

s230、在获得待分发弹幕消息时,消息接收器对象确定消息处理标识。

具体地,为了确保消息接收器对象中是基于单线程而逐条处理弹幕消息的,本发明实施例中需要设置消息处理标识,以便在上一条缓存弹幕消息处理完成时,即消息处理标识变为完成标识时,主动触发进行下一条缓存弹幕消息的处理。这样,消息处理标识为完成标识便是消息接收器对象中触发对弹幕消息进行处理的一个触发条件。但是,考虑到消息处理标识已经为完成标识,且消息列表为空的情况下,如果先将待分发弹幕消息存储至消息列表作为缓存弹幕消息,而后再从其中获取缓存弹幕消息,就会执行一些多余操作,无疑会增加该待分发弹幕消息的流转耗时。所以,本实施例中又增加了另一个触发条件——待分发弹幕消息的分发操作,以进一步缩短弹幕分发过程中的耗时。具体实施时,在消息接收器对象接收到弹幕分发器对象直达式分发的待分发弹幕消息时,触发消息处理标识获取操作,即消息接收器对象确定消息处理标识。

示例性地,消息接收器对象确定消息处理标识包括:依据处理状态变量值,确定消息处理标识,其中,处理状态变量是一个枚举类型变量,且枚举类型变量具有静态类型修饰符和禁用缓存修饰符。

其中,处理状态变量是指表征弹幕消息处理状态的变量,其用于存储消息接收器对象对弹幕消息处理状态的消息处理标识。

具体地,消息接收器对象根据其内的处理状态变量的值确定消息处理标识。

示例性地,处理状态变量是一个枚举类型变量,且具有静态类型修饰符和禁用缓存修饰符。由上述说明可知消息处理标识为至少两种标识,故为了便于消息处理标识的管理,将消息处理状态变量设计为枚举类型。考虑到设置处理状态变量的目的是为了使得消息接收器对象能够更加及时地处理弹幕消息,而计算机或手机等设备在硬件上通常设计缓存功能,例如cpu寄存器、缓存区和内存区的三级缓存设置,与三级缓存相对应,cpu处理后变量值的改变是先在缓存中改变,内存中变量值的改变具有一定的滞后性。所以,为了实现处理状态变量的实时同步目的,本发明实施例中将处理状态变量设置为禁用缓存功能,这样cpu改变处理状态变量值后,直接在内存中进行相应变量值的改变,而不经过缓存区。进一步地,为了实现与禁用缓存修饰符的统一,将处理状态变量设置为直接存储于静态内存区,这样还可简化该变量的访问方式,使其由原本通过对象访问方式变更为通过类直接访问方式,以提高处理状态变量的访问便捷性。

s240、消息接收器对象依据消息处理标识是否为完成标识,以及消息列表是否存储缓存弹幕消息,将待分发弹幕消息缓存至消息列表或对待分发弹幕消息进行设定处理。

具体地,根据上述说明可知,在消息处理标识为完成标识时,才具备了对待分发弹幕消息进行设定处理的基础条件。而是否能够直接对其进行设定处理,还取决于消息列表是否为空。如果消息列表不为空,即消息列表中存储有缓存弹幕消息,那么按照弹幕消息分发及处理的顺序性,此时也不能够直接对待分发弹幕消息进行设定处理。所以,消息接收器对象在确定消息处理标识之后,需要根据消息处理标识是否为完成标识,以及消息列表是否存储缓存弹幕消息,来确定对待分发弹幕消息的执行操作具体是将待分发弹幕消息缓存至消息列表,或是对待分发弹幕消息进行设定处理。

示例性地,s240包括:在消息处理标识为完成标识,且消息列表中未存储缓存弹幕消息时,消息接收器对象对待分发弹幕消息进行设定处理。

具体的,消息接收器对象在确定消息接收器对象的消息处理标识为完成标识时,说明其内部已经完成对之前的弹幕消息的处理,可以处理新的弹幕消息。并且消息接收器对象在确定消息列表中没有存储任何缓存弹幕消息时,说明目前没有积压下来的缓存弹幕消息。上述两个判定条件共同表明该消息接收器对象可以直接处理待分发弹幕消息。此时,消息接收器对象对待分发弹幕消息进行设定处理。

示例性地,s240包括:在消息处理标识不为完成标识时,消息接收器对象将待分发弹幕消息缓存至消息列表。

具体地,如果消息处理标识不为完成标识,说明消息接收器对象内部有即将处理或者正在处理的弹幕消息,其暂时无法处理新的弹幕消息。此时,无论消息列表中是否存储有缓存弹幕消息,均需将待分发弹幕消息按序存储至消息列表中,以等待后续分发。

示例性地,s240包括:在消息处理标识为完成标识,且消息列表中存储缓存弹幕消息时,消息接收器对象将待分发弹幕消息缓存至消息列表,并从消息列表中按序获取一条缓存弹幕消息作为目标弹幕消息;消息接收器对象对目标弹幕消息进行设定处理,并从消息列表中删除目标弹幕消息。

其中,目标弹幕消息是指从消息列表中获取的,可以执行设定处理的缓存弹幕消息。

具体地,虽然消息接收器对象的消息处理标识为完成标识,说明其中没有正在处理的弹幕消息,可以处理新的弹幕消息。但是,消息接收器对象中消息列表中存储有缓存弹幕消息,说明在待分发弹幕消息之前,还有需要执行设定处理的缓存弹幕消息存在。此时,为了确保消息接收器对象中弹幕消息处理的顺序性,按序将待分发弹幕消息存储至消息列表中。以消息列表为队列结构为例,将待分发弹幕消息存储至消息列表的队尾。

同时,由于消息处理标识为完成标识,说明消息接收器对象是可以处理新的弹幕消息的。那么,为了提高消息接收器对象的弹幕消息处理效率,消息接收器对象按照消息列表的数据类型,从消息列表中按序获取第一个缓存弹幕消息作为目标弹幕消息。仍以队列为例,消息接收器对象获取执行本操作时的消息列表的队头的一个缓存弹幕消息作为目标弹幕消息。然后,消息接收器对象对该目标弹幕消息进行设定处理。之后,为了避免对同一条弹幕消息的重复处理,将上述作为目标弹幕消息的缓存弹幕消息从消息列表中删除,此时消息列表队头的缓存弹幕消息便是被删除的目标弹幕消息之后的第二个缓存弹幕消息。这样能够在消息接收器对象对目标弹幕消息的设定处理执行失败而进行重试操作时,目标弹幕消息保持不变,提高了弹幕消息处理的容错性。

s250、在消息处理标识为完成标识,且消息列表中存储缓存弹幕消息时,消息接收器对象从消息列表中按序获取一条缓存弹幕消息作为目标弹幕消息。

具体地,上述s240是以待分发弹幕消息的分发操作为弹幕消息处理的触发条件。那么,在弹幕分发器对象没有新的待分发弹幕消息分发,即s210未被触发执行时,无法通过待分发弹幕消息的分发操作的触发条件来触发消息列表中缓存弹幕消息的处理,即s240无法被触发执行。此时,为了及时且完整地对消息列表中的缓存弹幕消息进行设定处理,本实施例中采用了消息处理标识为完成标识的触发条件。即在消息处理标识变为完成标识时,主动触发消息接收器对象从消息列表中按序获取一条缓存弹幕消息作为目标弹幕消息。该步骤的具体实施过程可参照上述s240中相应步骤的解释。需要说明的是,该步骤中不用主动获取消息处理标识,而是消息处理标识触发目标弹幕消息的获取。之后执行s260。

s260、消息接收器对象对目标弹幕消息进行设定处理,并从消息列表中删除目标弹幕消息。

同样地,该步骤的具体实施过程可参照上述s240中相应步骤的解释。

本实施例的技术方案,通过以待分发弹幕消息的获取,触发消息接收器对象对其内消息列表中的缓存弹幕消息的处理操作,增加了缓存弹幕消息的消费几率,缩短了弹幕消息的流转耗时,从而进一步提高了弹幕消息的分发效率。通过消息处理标识为完成标识,来触发消息接收器对象对其内消息列表中的缓存弹幕消息的处理操作,完善了消息接收器对象中缓存弹幕消息的处理机制,确保了弹幕消息分发的完整性;且省去了消息接收器对象中定时器的设置,简化了消息接收器对象中的消息处理过程,进一步提高了消息接收器对象的性能稳定性

以下是本发明实施例提供的弹幕消息分发装置的实施例,该装置与上述各实施例的弹幕消息分发方法属于同一个发明构思,在弹幕消息分发装置的实施例中未详尽描述的细节内容,可以参考上述弹幕消息分发方法的实施例。

实施例三

本实施例提供一种弹幕消息分发装置,参见图5,该装置包括:

弹幕分发器510和消息接收器520,弹幕分发器510包括对象确定模块511和消息分发模块512;

对象确定模块511用于依据待分发弹幕消息,确定消息接收器对象;

消息分发模块512用于调用消息接收器对象中的弹幕分发函数,将待分发弹幕消息分发至消息接收器对象,其中,弹幕分发函数为消息接收器对象继承预先定义的弹幕分发协议而获得;

消息接收器520,用于依据消息处理标识和消息列表,将待分发弹幕消息缓存至消息列表或对待分发弹幕消息进行设定处理。

可选地,消息分发模块512具体用于:

依据待分发弹幕消息确定目标消息标识,并依据目标消息标识确定消息接收器标识;

依据消息接收器标识,从接收器对象列表中获取消息接收器对象。

可选地,消息接收器520包括:标识确定模块和第一消息处理模块;

标识确定模块用于在获得待分发弹幕消息时,确定消息处理标识;

第一消息处理模块用于依据消息处理标识是否为完成标识,以及消息列表是否存储缓存弹幕消息,将待分发弹幕消息缓存至消息列表或对待分发弹幕消息进行设定处理。

其中,第一消息处理模块具体用于:

在消息处理标识为完成标识,且消息列表中未存储缓存弹幕消息时,对待分发弹幕消息进行设定处理;或,

在消息处理标识不为完成标识时,将待分发弹幕消息缓存至消息列表。

进一步地,第一消息处理模块还具体用于:

在消息处理标识为完成标识,且消息列表中存储缓存弹幕消息时,将待分发弹幕消息缓存至消息列表,并从消息列表中按序获取一条缓存弹幕消息作为目标弹幕消息;

对目标弹幕消息进行设定处理,并从消息列表中删除目标弹幕消息。

可选地,消息接收器520还包括第二消息处理模块,用于:

在消息处理标识为完成标识,且消息列表中存储缓存弹幕消息时,消息接收器对象从消息列表中按序获取一条缓存弹幕消息作为目标弹幕消息;

消息接收器对象对目标弹幕消息进行设定处理,并从消息列表中删除目标弹幕消息。

可选地,弹幕分发器510还包括协议定义模块,消息接收器520还包括协议继承模块;

协议定义模块用于依据弹幕消息获取协议,定义弹幕分发协议及弹幕分发协议中的弹幕分发函数,其中,弹幕分发协议为具有公有权限修饰符的接口协议,弹幕分发函数具有公有权限修饰符;

协议继承模块用于通过协议继承关键字,继承弹幕分发协议,以获得弹幕分发函数。

通过本发明实施例三的一种弹幕消息分发装置,实现了弹幕消息的直达式分发,简化了弹幕分发器对象的消息分发逻辑,提高了弹幕消息分发效率。

本发明实施例所提供的弹幕消息分发装置可执行本发明任意实施例所提供的弹幕消息分发方法,具备执行方法相应的功能模块和有益效果。

值得注意的是,上述弹幕消息分发装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

实施例四

参见图6,本实施例提供了一种设备600,其包括:一个或多个处理器620;存储装置610,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器620执行,使得一个或多个处理器620实现本发明实施例所提供的弹幕消息分发方法,包括:

弹幕分发器对象依据待分发弹幕消息,确定消息接收器对象;

弹幕分发器对象调用消息接收器对象中的弹幕分发函数,将待分发弹幕消息分发至消息接收器对象,其中,弹幕分发函数为消息接收器对象继承预先定义的弹幕分发协议而获得;

消息接收器对象依据消息处理标识和消息列表,将待分发弹幕消息缓存至消息列表或对待分发弹幕消息进行设定处理。

当然,本领域技术人员可以理解,处理器620还可以实现本发明任意实施例所提供的弹幕消息分发方法的技术方案。

图6显示的设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图6所示,该设备600包括处理器620、存储装置610、输入装置630和输出装置640;设备中处理器620的数量可以是一个或多个,图6中以一个处理器620为例;设备中的处理器620、存储装置610、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线650连接为例。

存储装置610作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的弹幕消息分发方法对应的程序指令/模块。

存储装置610可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置610可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置610可进一步包括相对于处理器620远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置630可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。

实施例五

本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种弹幕消息分发方法,该方法包括:

弹幕分发器对象依据待分发弹幕消息,确定消息接收器对象;

弹幕分发器对象调用消息接收器对象中的弹幕分发函数,将待分发弹幕消息分发至消息接收器对象,其中,弹幕分发函数为消息接收器对象继承预先定义的弹幕分发协议而获得;

消息接收器对象依据消息处理标识和消息列表,将待分发弹幕消息缓存至消息列表或对待分发弹幕消息进行设定处理。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的弹幕消息分发方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所提供的弹幕消息分发方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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