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

文档序号:15925640发布日期:2018-11-14 01:06阅读:215来源:国知局

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

背景技术

在搭载android系统的客户端(可简称为android客户端)中,对于需要接收弹幕消息的应用软件而言,其获取弹幕消息的方式,通常是通过网络远程访问弹幕服务器。

目前,android客户端网络远程访问弹幕服务器以获取弹幕消息的实现方式为:android客户端以调用基于java语言编写的弹幕消息获取函数的方式,周期性地发起弹幕消息获取的网络请求。弹幕服务器接收到上述网络请求之后,触发上述弹幕消息获取函数指向的弹幕服务器中基于c++语言编写的相应代码段的执行,以获取与网络请求对应的基于c++语言的c++弹幕消息对象,并将该c++弹幕消息对象以函数返回值的形式发送至android客户端。android客户端接收到c++弹幕消息对象后,再将其转换为基于java语言的java弹幕消息对象。

上述现有技术中android客户端获取弹幕消息的方式为主动地、周期性地调用函数的形式,这种弹幕消息获取方式存在两个问题:第一,android客户端频繁执行函数调用以及弹幕消息对象转换操作,造成较高的系统资源占用率,使得系统内存开销大;第二,发起函数调用的周期定时器时长设置不恰当,容易造成相邻两次函数调用之间弹幕消息的丢失。



技术实现要素:

本发明实施例提供一种弹幕消息传输方法、装置、设备及存储介质,以使android客户端更加及时地从弹幕服务器获取弹幕消息,极大地减少弹幕消息的丢失率,并在一定程度上降低系统内存开销。

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

弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息;

所述弹幕服务器依据所述目标弹幕消息,通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数,将所述目标弹幕消息发送至所述android客户端,其中,所述消息传输函数为所述android客户端中目标java弹幕监听器对象中的回调函数,所述目标java弹幕监听器对象预先注册至所述java弹幕库对象。

可选地,所述弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息包括:

所述弹幕服务器对所述待处理弹幕消息进行解密及消息解析,获得包含弹幕消息标识和弹幕消息体的所述目标弹幕消息。

可选地,在所述通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数之前,该方法还包括:

所述android客户端基于所述弹幕服务器中的c++弹幕库类,构造java弹幕库对象;

所述android客户端基于所述弹幕服务器中的c++监听器类,构建所述目标java弹幕监听器对象,所述目标java弹幕监听器对象中包含所述消息传输函数;

所述android客户端依据所述目标java弹幕监听器对象,调用所述java弹幕库对象中的监听器设置函数,将所述目标java弹幕监听器对象注册至所述java弹幕库对象中;

相应地,调用消息传输函数包括:

基于所述弹幕服务器中与所述java弹幕库对象对应的c++弹幕库对象调用所述消息传输函数。

其中,所述android客户端基于所述弹幕服务器中的c++弹幕库类,构造java弹幕库对象包括:

所述android客户端调用应用程序类的上下文环境获取函数,获取android系统的上下文环境对象;

所述android客户端依据所述上下文环境对象,调用所述c++弹幕库类的构造函数,构造所述java弹幕库对象。

其中,所述android客户端基于所述弹幕服务器中的c++监听器类,构建所述目标java弹幕监听器对象包括:

所述android客户端基于所述c++监听器类获取第一初始java弹幕监听器对象;

所述android客户端基于所述弹幕服务器中的c++弹幕监听器接口,对所述第一初始java弹幕监听器对象赋值,以构建所述目标java弹幕监听器对象,其中,所述c++弹幕监听器接口包含预定义的所述消息传输函数。

进一步地,所述android客户端基于所述c++监听器类获取第一初始java弹幕监听器对象包括:

所述android客户端基于所述c++监听器类,定义第二初始java弹幕监听器对象;

所述android客户端将所述第二初始java弹幕监听器对象初始化为空对象,获得所述第一初始java弹幕监听器对象。

进一步地,所述android客户端基于所述弹幕服务器中的c++弹幕监听器接口,对所述第一初始java弹幕监听器对象赋值,以构建所述目标java弹幕监听器对象包括:

所述android客户端通过接口继承关键字,继承所述c++弹幕监听器接口,并对所述预定义的所述消息传输函数进行回调,获得java弹幕监听器接口;

所述android客户端基于所述java弹幕监听器接口,对所述第一初始java弹幕监听器对象赋值,以构建所述目标java弹幕监听器对象。

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

目标弹幕消息获取模块,用于弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息;

目标弹幕消息发送模块,用于弹幕服务器依据所述目标弹幕消息,通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数,将所述目标弹幕消息发送至所述android客户端,其中,所述消息传输函数为所述android客户端中目标java弹幕监听器对象中的回调函数,所述目标java弹幕监听器对象预先注册至所述java弹幕库对象。

可选地,目标弹幕消息获取模块具体用于:

所述弹幕服务器对所述待处理弹幕消息进行解密及消息解析,获得包含弹幕消息标识和弹幕消息体的所述目标弹幕消息。

可选地,在上述装置的基础上,该装置还包括监听设置模块,该监听设置模块包括:

java弹幕库对象构建子模块,用于在所述弹幕服务器通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数之前,所述android客户端基于所述弹幕服务器中的c++弹幕库类,构造java弹幕库对象;

目标java弹幕监听器对象构建子模块,用于所述android客户端基于所述弹幕服务器中的c++监听器类,构建所述目标java弹幕监听器对象,所述目标java弹幕监听器对象中包含所述消息传输函数;

监听器注册子模块,用于所述android客户端依据所述目标java弹幕监听器对象,调用所述java弹幕库对象中的监听器设置函数,将所述目标java弹幕监听器对象注册至所述java弹幕库对象中。

相应地,目标弹幕消息发送模块具体用于:

基于所述弹幕服务器中与所述java弹幕库对象对应的c++弹幕库对象调用所述消息传输函数。

其中,java弹幕库对象构建子模块具体用于:

所述android客户端调用应用程序类的上下文环境获取函数,获取android系统的上下文环境对象;

所述android客户端依据所述上下文环境对象,调用所述c++弹幕库类的构造函数,构造所述java弹幕库对象。

其中,目标java弹幕监听器对象构建子模块具体用于:

所述android客户端基于所述c++监听器类获取第一初始java弹幕监听器对象;

所述android客户端基于所述弹幕服务器中的c++弹幕监听器接口,对所述第一初始java弹幕监听器对象赋值,以构建所述目标java弹幕监听器对象,其中,所述c++弹幕监听器接口包含预定义的所述消息传输函数。

进一步地,目标java弹幕监听器对象构建子模块具体用于:

所述android客户端基于所述c++监听器类,定义第二初始java弹幕监听器对象;

所述android客户端将所述第二初始java弹幕监听器对象初始化为空对象,获得所述第一初始java弹幕监听器对象。

进一步地,目标java弹幕监听器对象构建子模块具体用于:

所述android客户端通过接口继承关键字,继承所述c++弹幕监听器接口,并对所述预定义的所述消息传输函数进行回调,获得java弹幕监听器接口;

所述android客户端基于所述java弹幕监听器接口,对所述第一初始java弹幕监听器对象赋值,以构建所述目标java弹幕监听器对象。

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

一个或多个处理器;

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

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

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

本发明实施例通过弹幕服务器调用作为android客户端中目标java弹幕监听器对象中回调函数的消息传输函数,将对待处理弹幕消息进行预处理之后的目标弹幕消息发送至android客户端,使得弹幕服务器在获得目标弹幕消息时主动将其推送给android客户端,进而使得android客户端以被动方式,更加及时地接收目标弹幕消息,从而提高了android客户端获取弹幕消息的实时性,极大地降低了弹幕消息的丢包率,并在一定程度上降低了android客户端为获取弹幕消息而开辟的系统资源开销。

附图说明

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

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

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

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

具体实施方式

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

实施例一

本实施例提供的弹幕消息传输方法可适用于android客户端从弹幕服务器获取弹幕消息,该方法可以由配置在诸如弹幕服务器等具备弹幕处理能力的设备中的弹幕消息传输装置来执行,该装置可以由软件和/或硬件的方式实现。参见图1,本实施例的方法具体包括如下步骤:

s110、弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息。

其中,弹幕服务器是指能够传输及处理弹幕消息的服务器。待处理弹幕消息是指弹幕服务器所获取的、未经处理的原始弹幕消息。目标弹幕消息是指经过处理的弹幕消息,其可直接发送至android客户端。

具体地,弹幕服务器所获取到的待处理弹幕消息与目标弹幕消息之间的数据存储格式及数据发送格式通常存在差异。为了能够获得可直接发送至android客户端的目标弹幕消息,弹幕服务器在获取到待处理弹幕消息后,需要对其进行预处理,以便获得能够适应android客户端的目标弹幕消息。

示例性地,弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息包括:弹幕服务器对待处理弹幕消息进行解密及消息解析,获得包含弹幕消息标识和弹幕消息体的目标弹幕消息。

其中,弹幕消息标识是指能够标识弹幕消息的字符,其可以是数字、字母、符号及上述各种字符的任意组合,该弹幕消息标识应当是一条弹幕消息的唯一的、全局的标识。弹幕消息体是指弹幕消息的承载者,其内包含具体地弹幕消息内容。

具体地,弹幕服务器所获得的待处理弹幕消息是经过加密的,且其数据格式为弹幕发送端内规定的数据格式,故弹幕服务器需要对所获取的待处理弹幕消息进行解密。再对解密后的弹幕消息进行解析和重构,以获得弹幕消息标识和具体的弹幕消息内容,即弹幕消息体,并将弹幕消息标识和弹幕消息体存储为发送至android客户端的规定的数据格式,且标记为目标弹幕消息,以便后续进行弹幕消息的发送。

s120、弹幕服务器依据目标弹幕消息,通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数,将目标弹幕消息发送至android客户端。

其中,java弹幕库对象是指android客户端中以java语言编写的弹幕库对象,其预先构建的过程见后续说明。c++弹幕库对象是指以c++语言编写的弹幕库对象,其是弹幕服务器中基于以c++语言编写的弹幕库类(即c++弹幕库类)而生成的对象。消息传输函数为android客户端中目标java弹幕监听器对象中的回调函数。这里,目标java弹幕监听器对象是指android客户端中基于java语言构建的、经过实例化(或称赋值)的监听器对象,其用于对弹幕库对象进行监听,该监听的实现需要将目标java弹幕监听器对象预先注册至java弹幕库对象,具体的注册过程可见后续实施例的说明。回调函数是指通过函数指针调用的函数,提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者,当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。在本实施例中,作为回调函数的消息传输函数,是在android客户端中进行函数定义及函数实现,并且是android客户端将消息传输函数的函数指针注册至弹幕服务器,弹幕服务器在特定时机下,调用消息传输函数,即通过消息传输函数的函数指针,触发android客户端中消息传输函数体的执行,以实现弹幕消息的传输。

具体地,弹幕服务器在执行本步骤之前会预先获得消息传输函数的函数指针,并且结合后续实施例中的说明可知,实际上持有消息传输函数的函数指针的是与java弹幕库对象相对应的c++弹幕库对象。当弹幕服务器获取到目标弹幕消息时,按照消息传输函数的输入参数形式,将目标弹幕消息作为函数输入参数,通过c++弹幕库对象触发调用消息传输函数,即触发函数指针的函数调用,将函数输入参数传递至android客户端以执行android客户端中的消息传输函数,从而实现将目标弹幕消息传输至android客户端。

示例性地,在弹幕服务器通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数之前,还包括:android客户端基于弹幕服务器中的c++弹幕库类,构造java弹幕库对象;android客户端基于弹幕服务器中的c++监听器类,构建目标java弹幕监听器对象,目标java弹幕监听器对象中包含消息传输函数;android客户端依据目标java弹幕监听器对象,调用java弹幕库对象中的监听器设置函数,将目标java弹幕监听器对象注册至java弹幕库对象中。

其中,java弹幕库对象是指android客户端中以java语言编写的弹幕库对象。c++监听器类是指弹幕服务器中以c++语言编写的监听器类。监听器设置函数是将监听器对象与被监听对象绑定的函数,其在c++弹幕库类中定义。

具体地,在弹幕服务器执行消息传输函数调用的操作之前,需要先获取消息传输函数的函数指针,即android客户端需要预先设置回调函数,并实现回调函数在弹幕服务器中的注册操作。

具体实施时,android客户端先调用弹幕服务器中的c++弹幕库类,构建一个java弹幕库对象,该java弹幕库对象为android客户端中的java对象,后续在java编程环境中可以直接使用,无需进行代码转换。java弹幕库对象实际指向的是c++弹幕库对象,后续对该java弹幕库对象的操作可以映射为对c++弹幕库对象的操作。

在android客户端构建java弹幕库对象的同时/之前/之后,android客户端调用弹幕服务器中的c++监听器类构建一个目标java弹幕监听器对象,同样地,该目标java弹幕监听器对象为android客户端中的一个java接口,后续在java编程环境中可以直接使用,无需进行代码转换。该目标java弹幕监听器对象的构建,可以是直接调用弹幕服务器中的c++类来定义,并进一步调用相关的c++接口来实例化;也可以先基于弹幕服务器中的c++类或接口,构建android客户端中的java接口,再基于java接口来实例化,以便减少c++语言与java语言之间的代码转换过程,简化开发过程。在对目标java弹幕监听器对象的实例化过程中,其会继承并实现弹幕服务器中相关的c++接口中的回调函数,即目标java弹幕监听器对象中包含被实现的消息传输函数。

在构建了java弹幕库对象和目标java弹幕监听器对象之后,就可以进行回调函数的注册。android客户端调用java弹幕库对象中的监听器设置函数,将目标java弹幕监听器对象注册至java弹幕库对象,则实现了java弹幕库对象和目标java弹幕监听器对象之间的桥接关系。由于java弹幕库对象实际指向c++弹幕库对象,故上述过程的实际执行结果是,通过java弹幕库对象触发c++弹幕库对象调用其监听器设置函数,将目标java弹幕监听器对象注册至c++弹幕库对象,即将目标java弹幕监听器对象对应的监听接口及其内部的回调函数指针都注册至弹幕服务器中的c++弹幕库对象,这样,弹幕服务器就持有了消息传输函数的函数指针,且构建了弹幕服务器与android客户端之间的消息通道。

本实施例的技术方案,通过弹幕服务器调用作为android客户端中目标java弹幕监听器对象中回调函数的消息传输函数,将对待处理弹幕消息进行预处理之后的目标弹幕消息发送至android客户端,使得弹幕服务器主动地将所获得的目标弹幕消息推送给android客户端,进而使得android客户端以被动方式,更加及时地接收目标弹幕消息,从而提高了android客户端获取弹幕消息的实时性,极大地降低了弹幕消息的丢包率,并在一定程度上降低了android客户端为获取弹幕消息而开辟的系统资源开销。

实施例二

本实施例对android客户端中预先建立弹幕库对象与弹幕监听器对象之间的桥接关系,从而构建弹幕服务器与android客户端之间的消息传输通道进行详细说明。具体来说,本实施例在上述实施例一的基础上,对“android客户端基于弹幕服务器中的c++弹幕库类,构造java弹幕库对象”进行了进一步优化。在此基础上,还可以进一步对“android客户端基于弹幕服务器中的c++监听器类,构建目标java弹幕监听器对象”进行优化。其中与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的弹幕消息传输方法包括:

s210、android客户端调用应用程序类的上下文环境获取函数,获取android系统的上下文环境对象。

其中,应用程序类application是android系统开发方提供的一个系统类,其用于应用程序开发过程,开发一个应用程序时会实现一个application类的实例化。上下文环境对象是一个抽象类,并且android系统提供了类的实现,通过上下文环境对象允许访问应用程序特定的资源和类。

具体地,java弹幕库对象mdanmukuclient是基于c++弹幕库类danmukuclient来构建的,其具体构建过程是调用c++弹幕库类danmukuclient的构造函数。该构造函数的原型是privatedanmukuclient(finalcontextcontext),可以看出构造过程需要传递一个context类型的context对象,故在构建java弹幕库对象mdanmukuclient之前,需要从android系统中获取该context对象。具体实施时,可以通过调动android系统应用程序类application中的上下文环境获取函数getapplicationcontext,来获取android系统的context对象。

s220、android客户端依据上下文环境对象,调用c++弹幕库类的构造函数,构造java弹幕库对象。

具体地,android客户端获取到android系统的上下文环境对象context之后,将该上下文环境对象context作为函数输入参数,调用c++弹幕库类danmukuclient的构造函数privatedanmukuclient(finalcontextcontext),获得函数返回值,该函数返回值即为一个java弹幕库对象mdanmukuclient。

s230、android客户端基于c++监听器类获取第一初始java弹幕监听器对象。

其中,第一初始java弹幕监听器对象是指初始化之后的java弹幕监听器对象。

具体地,要实现对弹幕库对象的监听,需要构建弹幕监听器对象。具体的构建方式是android客户端调用c++监听器类danmulistener来定义并初始化一个监听器对象,即第一初始java弹幕监听器对象。

示例性地,android客户端基于c++监听器类获取第一初始java弹幕监听器对象包括:android客户端基于c++监听器类,定义第二初始java弹幕监听器对象;android客户端将第二初始java弹幕监听器对象初始化为空对象,获得第一初始java弹幕监听器对象。

其中,第二初始java弹幕监听器对象是指未经初始化及实例化的java弹幕监听器对象。

具体地,android客户端通过调用c++监听器类danmulistener,定义一个弹幕监听器对象mondanmurecvlistener,即第二初始java弹幕监听器对象。之后,对定义好的第二初始java弹幕监听器对象mondanmurecvlistener进行初始化,具体为初始化为空对象(null),则获得第一初始java弹幕监听器对象。上述具体实现为:privatedanmulistenermondanmurecvlistener=null,以便后续对其进行合适的实例化操作。

s240、android客户端基于弹幕服务器中的c++弹幕监听器接口,对第一初始java弹幕监听器对象赋值,以构建目标java弹幕监听器对象。

其中,c++弹幕监听器接口是指基于c++语言编写的弹幕监听接口,且其中包含预先定义,但未进行函数实现的消息传输函数(预定义的消息传输函数)。该c++弹幕监听器接口存储于弹幕服务器中。

具体地,android客户端获取到第一初始java弹幕监听器对象之后,需要对其进行实例化。由于弹幕监听器对象需要对c++弹幕库对象进行监听并实现弹幕消息的传输,故本实施例中选择了接口的实现形式,以为弹幕服务器和android客户端建立传输通道。具体实施时,android客户端在android系统应用程序的生命周期函数oncreate中,调用弹幕服务器中的c++弹幕监听器接口,对第一初始java弹幕监听器对象进行赋值。该c++弹幕监听器接口中包含预定义的消息传输函数,在利用c++弹幕监听器接口对第一初始java弹幕监听器对象赋值的过程中,需要对上述预定义的消息传输函数进行实现,即实例化。

示例性地,android客户端基于弹幕服务器中的c++弹幕监听器接口,对第一初始java弹幕监听器对象赋值,以构建目标java弹幕监听器对象包括:android客户端通过接口继承关键字,继承c++弹幕监听器接口,并对预定义的消息传输函数进行回调,获得java弹幕监听器接口;android客户端基于java弹幕监听器接口,对第一初始java弹幕监听器对象赋值,以构建目标java弹幕监听器对象。

其中,接口继承关键字是c++语言中规定的、进行接口继承的关键字。java弹幕监听器接口是指java语言中的弹幕监听接口。

具体地,android客户端通过接口继承关键字implements,实现对c++弹幕监听器接口jnidanmu.danmuinfolistener的继承,以获得java弹幕监听器接口mydanmulistener,具体实现为:classmydanmulistenerimplementsjnidanmu.danmuinfolistener。该java弹幕监听器接口mydanmulistener是一个java接口,后续构建目标java弹幕监听器对象时,可以直接使用,无需再进行c++语言与java语言的代码转换。并且,java弹幕监听器接口的构建过程中需要对c++弹幕监听器接口jnidanmu.danmuinfolistener中包含的预定义的消息传输函数publicvoidonmessage(inttype,stringmsg)进行实现,其中type为弹幕消息标识,msg为弹幕消息体。由于本实施例中该c++弹幕监听器接口中回调函数的功能仅需进行参数传递,故该回调函数内部并未进行具体的函数体实现,而是通过一次回调来对其进行函数实现。当然,如果该回调函数除了参数传递之外,还需进行弹幕消息处理等操作,则需要在回调函数实现的过程中,进行具体函数代码的实现。

在获得了java弹幕监听器接口之后,需要该java弹幕监听器接口进行第一初始java弹幕监听器对象的赋值。具体则是在android系统的生命周期函数oncreate中通过mondanmurecvlistener=newmydanmulistener()的方式来进行实例化过程,则构建了数据类型为mydanmulistener类型的目标java弹幕监听器对象mondanmurecvlistener。

s250、android客户端依据目标java弹幕监听器对象,调用java弹幕库对象中的监听器设置函数,将目标java弹幕监听器对象注册至java弹幕库对象中。

具体地,设置java弹幕库对象和目标java弹幕监听器对象之间的桥接关系的过程则具体可以是:以数据类型为mydanmulistener类型的目标java弹幕监听器对象mondanmurecvlistener为函数输入参数,通过java弹幕库对象mdanmukuclient调用监听器设置函数setlistener(mydanmulistenerlistener),将目标java弹幕监听器对象mondanmurecvlistener注册至java弹幕库对象mdanmukuclient中。

本实施例的技术方案,通过android客户端获取android系统的上下文环境对象,并依据上下文环境对象,调用c++弹幕库类的构造函数,构造java弹幕库对象,建立了将android客户端中监听接口传递至弹幕服务器的基础。通过android客户端基于弹幕服务器中的c++监听器类获取第一初始java弹幕监听器对象,并基于弹幕服务器中的c++弹幕监听器接口,对第一初始java弹幕监听器对象赋值,以构建目标java弹幕监听器对象,为android客户端建立与弹幕服务器之间的桥接关系提供了监听接口。通过将目标java弹幕监听器对象注册至java弹幕库对象中,使得弹幕服务器中的c++弹幕库对象持有了android客户端中弹幕监听器对象所具有的监听接口及回调函数指针,进而使得弹幕服务器能够将所获得的目标弹幕消息推送至android客户端,使android客户端更加及时地获取弹幕消息,提高了android客户端获取弹幕消息的获取效率,降低了android客户端的系统内存开销。

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

实施例三

本实施例提供一种弹幕消息传输装置,参见图3,该装置具体包括:

目标弹幕消息获取模块310,用于弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息;

目标弹幕消息发送模块320,用于弹幕服务器依据目标弹幕消息,通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数,将目标弹幕消息发送至android客户端,其中,消息传输函数为android客户端中目标java弹幕监听器对象中的回调函数,目标java弹幕监听器对象预先注册至java弹幕库对象。

可选地,目标弹幕消息获取模块310具体用于:

弹幕服务器对待处理弹幕消息进行解密及消息解析,获得包含弹幕消息标识和弹幕消息体的目标弹幕消息。

可选地,在上述装置的基础上,该装置还包括监听设置模块330,该监听设置模块330包括:

java弹幕库对象构建子模块,用于在弹幕服务器通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数之前,android客户端基于弹幕服务器中的c++弹幕库类,构造java弹幕库对象;

目标java弹幕监听器对象构建子模块,用于android客户端基于弹幕服务器中的c++监听器类,构建目标java弹幕监听器对象,目标java弹幕监听器对象中包含消息传输函数;

监听器注册子模块,用于android客户端依据目标java弹幕监听器对象,调用java弹幕库对象中的监听器设置函数,将目标java弹幕监听器对象注册至java弹幕库对象中。

相应地,目标弹幕消息发送模块具体用于:

基于弹幕服务器中与java弹幕库对象对应的c++弹幕库对象调用消息传输函数。

其中,java弹幕库对象构建子模块具体用于:

android客户端调用应用程序类的上下文环境获取函数,获取android系统的上下文环境对象;

android客户端依据上下文环境对象,调用c++弹幕库类的构造函数,构造java弹幕库对象。

其中,目标java弹幕监听器对象构建子模块具体用于:

android客户端基于c++监听器类获取第一初始java弹幕监听器对象;

android客户端基于弹幕服务器中的c++弹幕监听器接口,对第一初始java弹幕监听器对象赋值,以构建目标java弹幕监听器对象,其中,c++弹幕监听器接口包含预定义的消息传输函数。

进一步地,目标java弹幕监听器对象构建子模块具体用于:

android客户端基于c++监听器类,定义第二初始java弹幕监听器对象;

android客户端将第二初始java弹幕监听器对象初始化为空对象,获得第一初始java弹幕监听器对象。

进一步地,目标java弹幕监听器对象构建子模块具体用于:

android客户端通过接口继承关键字,继承c++弹幕监听器接口,并对预定义的消息传输函数进行回调,获得java弹幕监听器接口;

android客户端基于java弹幕监听器接口,对第一初始java弹幕监听器对象赋值,以构建目标java弹幕监听器对象。

通过本发明实施例三的一种弹幕消息传输装置,实现了弹幕服务器主动地将所获得的目标弹幕消息推送给android客户端,使得android客户端以被动方式,更加及时地接收目标弹幕消息,从而提高了android客户端获取弹幕消息的实时性,极大地降低了弹幕消息的丢包率,并在一定程度上降低了android客户端为获取弹幕消息而开辟的系统资源开销。

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

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

实施例四

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

弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息;

弹幕服务器依据目标弹幕消息,通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数,将目标弹幕消息发送至android客户端,其中,消息传输函数为android客户端中目标java弹幕监听器对象中的回调函数,目标java弹幕监听器对象预先注册至java弹幕库对象。

当然,本领域技术人员可以理解,处理器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可包括显示屏等显示设备。

实施例五

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

弹幕服务器对待处理弹幕消息进行预处理,获得目标弹幕消息;

弹幕服务器依据目标弹幕消息,通过与android客户端中预先构建的java弹幕库对象对应的c++弹幕库对象调用消息传输函数,将目标弹幕消息发送至android客户端,其中,消息传输函数为android客户端中目标java弹幕监听器对象中的回调函数,目标java弹幕监听器对象预先注册至java弹幕库对象。

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

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

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

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