CN107770563B - 一种弹幕消息处理方法及装置 - Google Patents
一种弹幕消息处理方法及装置 Download PDFInfo
- Publication number
- CN107770563B CN107770563B CN201710935595.3A CN201710935595A CN107770563B CN 107770563 B CN107770563 B CN 107770563B CN 201710935595 A CN201710935595 A CN 201710935595A CN 107770563 B CN107770563 B CN 107770563B
- Authority
- CN
- China
- Prior art keywords
- barrage message
- barrage
- processing sub
- message processing
- thread
- 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
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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
-
- 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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
- H04N21/2355—Processing of additional data, e.g. scrambling of additional data or processing content descriptors involving reformatting operations of additional data, e.g. HTML pages
-
- 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/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4788—Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
-
- 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/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
- H04N21/8586—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
Abstract
本发明提供一种弹幕消息处理方法及装置,所述方法包括:S1,使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;S2,在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列,将检索结果对应的弹幕消息存入预先创建的栈中;S3,若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板;S4,将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程对所述未处理的弹幕消息进行渲染。本发明一方面解决了跨域问题;另一方面实现弹幕的批量处理,提高了弹幕的处理效率,解决了客户端卡顿的问题,提高了用户体验。
Description
技术领域
本发明属于应用开发领域,更具体地,涉及一种弹幕消息处理方法及装置。
背景技术
随着网络交互平台的发展,越来越多的用户通过登录网络交互平台进行交流。其中,网络直播是非常受广大用户欢迎的应用。在直播期间,用户可以与主播进行互动,如发送弹幕消息、给主播赠送礼物等,从而增加主播与用户之间互动的趣味性。
现有技术中,热门主播所在直播间中的弹幕消息量很大。在PC(PersonalComputer,个人计算机)客户端上,一般使用JavaScript脚本进行弹幕消息的处理。在弹幕消息量的数量很大时,需要对弹幕消息的显示等进行复杂运算,且需要频繁地渲染弹幕消息,而JavaScript脚本为单线程运行,容易导致客户端上的视频直播出现严重的卡顿现象,严重影响用户观看直播的用户体验。
综上所述,现有的弹幕消息处理技术在弹幕消息量很大的情况下,容易导致客户端的卡顿现象,用户体验差。
发明内容
为克服上述在弹幕消息量很大的情况下,客户端容易出现卡顿的问题或者至少部分地解决上述问题,本发明提供了一种弹幕消息处理方法及装置。
根据本发明的第一方面,提供一种弹幕消息处理方法,包括:
S1,使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;
S2,在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列,将检索结果对应的弹幕消息存入预先创建的栈中;
S3,若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板;
S4,将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染。
具体地,所述步骤S1具体包括:
向服务器发送ajaxGET请求,获取所述服务器上的静态资源;
将所述静态资源转换成txt文本,使用所述txt文本创建二进制流;
根据所述二进制流,生成临时url链接;
根据所述临时url链接,使用webworker构造函数创建弹幕消息处理子线程。
具体地,所述步骤S1与S2之间还包括:
为所述弹幕消息处理子线程创建系统消息通道,并加载所述弹幕消息处理子线程的依赖库;
根据所述系统信息通道推送的所述弹幕消息处理子线程的依赖消息和所述依赖库,对所述弹幕消息处理子线程进行初始化。
具体地,所述步骤S1与S2之间还包括:
在弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间建立双向日志通道,以供所述主线程通过所述日志通道获取所述弹幕消息处理子线程中的日志信息,所述主线程根据所述日志信息跟踪所述弹幕消息处理子线程中的数据。
具体地,所述步骤S2还包括:
当所述检索结果对应的弹幕消息的数量大于所述栈的预设深度,获取所述检索结果对应的弹幕消息的数量与所述预设深度之间的差值;
将数量为所述差值的弹幕消息去除。
具体地,所述方法还包括:
将所述弹幕消息处理子线程的初始化信息进行保存;
当监听到所述弹幕消息处理子线程异常时,使用所述弹幕消息处理子线程的主线程关闭所述弹幕消息处理子线程;
根据保存的所述初始化信息重新创建所述弹幕消息处理子线程。
具体地,所述方法还包括:
将所述弹幕消息和所述弹幕消息转换的HTML模板以字符串类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递;
将除所述弹幕消息以外的其他消息以除所述字符串类型以外的其他类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递。
根据本发明的第二方面,提供一种弹幕消息处理装置,包括:
创建单元,用于使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;
检索单元,用于在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列,将检索结果对应的弹幕消息存入预先创建的栈中;
转换单元,用于在所述栈中存在未处理的弹幕消息时,将所有所述未处理的弹幕消息转换为HTML模板;
渲染单元,用于将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染。
根据本发明的第三方面,提供一种弹幕消息处理设备,包括:
至少一个处理器、至少一个存储器和总线;其中,
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如前所述的方法。
根据本发明的第四方面,提供一种非暂态计算机可读存储介质,用于存储如前所述方法的计算机程序。
本发明提供一种弹幕消息处理方法及装置,该方法一方面,通过将服务器上的静态资源转换成客户端上的临时url链接,解决了跨域问题;另一方面使用创建的弹幕消息处理子线程,将每隔预设时长从弹幕消息处理任务队列中检索到的弹幕消息处理任务对应的弹幕消息入栈,将所述栈中所有未处理的弹幕消息转换为HTML模板,所述弹幕消息处理子线程的主线程根据所述HTML模板对未处理的弹幕消息进行处理,从而实现了弹幕的批量处理,提高了弹幕的处理效率,解决了客户端卡顿的问题,提高了用户体验。
附图说明
图1为本发明实施例提供的弹幕消息处理方法整体流程示意图;
图2为本发明实施例提供的弹幕消息处理装置整体结构示意图;
图3为本发明实施例提供的弹幕消息处理设备整体结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
在本发明的一个实施例中提供一种弹幕消息处理方法,图1为本发明实施例提供的弹幕消息处理方法整体流程示意图,该方法包括:S1,使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;S2,在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列,将检索结果对应的弹幕消息存入预先创建的栈中;S3,若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板;S4,将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染。
具体地,S1中,创建弹幕消息处理子线程,在所述弹幕消息处理子线程中创建将弹幕消息转换为HTML模板的库函数、弹幕消息处理任务队列和弹幕消息定时处理器。其中,所述弹幕消息处理任务队列用于缓存弹幕消息处理任务,所述弹幕消息定时处理器用于每隔预设时长对弹幕消息进行处理。使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程。S2中,在所述弹幕消息处理子线程中,使用所述弹幕消息定时处理器每隔预设时长对所述弹幕消息处理任务队列进行检索。一个弹幕消息处理任务对应一条弹幕消息,获取从所述弹幕消息处理任务队列中检索到的弹幕消息处理任务对应的弹幕消息,将所述对应的弹幕消息存入预先创建的栈中。S3中,判断所述栈中是否存在未处理的弹幕消息。若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板。S4中,将所述HTML模板发送给所述弹幕消息处理子线程的主线程。所述主线程根据所述HTML模板将所述未处理的弹幕消息渲染到弹幕区域,同时清空所述栈中已经处理的弹幕消息,等待所述弹幕消息定时处理器对所述弹幕消息处理任务队列的下一次检索。
本实施例一方面,通过将服务器上的静态资源转换成客户端上的临时url链接,解决了跨域问题;另一方面使用创建的弹幕消息处理子线程,将每隔预设时长从弹幕消息处理任务队列中检索到的弹幕消息处理任务对应的弹幕消息入栈,将所述栈中所有未处理的弹幕消息转换为HTML模板,所述弹幕消息处理子线程的主线程根据所述HTML模板对未处理的弹幕消息进行处理,从而实现了弹幕的批量处理,提高了弹幕的处理效率,解决了客户端卡顿的问题,提高了用户体验。
在上述实施例的基础上,本实施例中所述步骤S1具体包括:向服务器发送ajaxGET请求,获取所述服务器上的静态资源;将所述静态资源转换成txt文本,使用所述txt文本创建二进制流;根据所述二进制流,生成临时url链接;根据所述临时url链接,使用webworker构造函数创建弹幕消息处理子线程。
具体地,用户客户端向服务器发送ajaxGET请求,所述ajaxGET为Ajax中传送数据的方式,将数据追加到url链接中,使用http的header发送,即浏览器将所述数据案子url链接的格式附加在请求行中的资源路径后面。服务器根据所述ajaxGET请求向客户端发送客户端请求的静态资源,如JavaScript文件。Web中直接发送到客户端的文件为静态资源,动态资源一般指数据库中的资源。由于服务器上所述静态资源位于cdn(Content DeliveryNetwork,内容分发网络)域,而客户端接收所述静态资源后将处理后的所述静态资源保存在页面域,由于跨域的问题,需要对所述静态资源进行转换。将所述静态资源转换为txt文本,使用所述txt文本创建二进制流,为所述二进制流生成所述页面域下的临时url链接,从而根据cdn域下的静态资源创建页面域下的临时url链接,解决了跨域问题。将所述url链接作为所述webworker构造函数的参数,使用所述webworker构造函数创建弹幕消息处理子线程。
在上述各实施例的基础上,本实施例中所述步骤S1与S2之间还包括:为所述弹幕消息处理子线程创建系统消息通道,并加载所述弹幕消息处理子线程的依赖库;根据所述系统信息通道推送的所述弹幕消息处理子线程的依赖消息和所述依赖库,对所述弹幕消息处理子线程进行初始化。
具体地,为所述弹幕消息处理子线程创建系统消息通道、日志通道和弹幕消息通道等,所述系统消息通道传递系统消息,所述日志通道传递日志消息,所述弹幕消息通道传递弹幕消息。加载所述弹幕消息处理子线程的依赖库,所述依赖库包括工具函数、数据解析函数和模板引擎等。在所述弹幕消息处理子线程创建成功后,所述系统信息通道推送所述弹幕消息处理子线程的依赖消息,所述依赖消息为所述弹幕消息处理子线程需要用到的消息,如用户信息和直播间信息等。根据所述依赖消息和依赖库对所述弹幕消息处理子线程进行初始化。
本实施例中通过所述弹幕消息处理子线程的系统消息通道,推送所述弹幕消息处理子线程的依赖消息,从而使所述弹幕消息处理子线程根据所述系统信息通道推送的所述弹幕消息处理子线程的依赖消息获取主线程中的属性,如用户信息和直播间信息等。
在上述各实施例的基础上,本实施例中所述步骤S1与S2之间还包括:在弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间建立双向日志通道,以供所述主线程通过所述日志通道获取所述弹幕消息处理子线程中的日志信息,所述主线程根据所述日志信息跟踪所述弹幕消息处理子线程中的数据。
具体地,在弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间建立双向日志通道,所述主线程可以通过所述日志通道发起对所述弹幕消息处理子线程中的弹幕消息进行跟踪,或者所述弹幕消息处理子线程将日志信息发送给所述主线性,一个所述主线程根据所述日志跟踪所述弹幕消息处理子线程中的数据,或对所述弹幕消息处理子线程中的错误进行排查。所述弹幕消息处理子线程的主线程为对每个直播间中的所有信息进行处理的线程。相应地,所述弹幕子线程为对每个直播间中的弹幕消息进行处理的线程。
本实施例中在弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间建立双向日志通道,使所述主线程可以通过所述日志通道对所述弹幕消息处理子线程进行断点调试,降低开发难度。
在上述各实施例的基础上,本实施例中,所述步骤S2还包括:当所述检索结果对应的弹幕消息的数量大于所述栈的预设深度,获取所述检索结果对应的弹幕消息的数量与所述预设深度之间的差值;将数量为所述差值的弹幕消息去除。
具体地,对存放所述弹幕消息的栈的深度进行限制,当存在大量的弹幕消息时,将用户无法观看到的弹幕消息进行去除,即在入栈前或入栈后将数量为所述差值的弹幕消息去除。所述差值为检索结果对应的弹幕消息的数量与所述栈的预设深度之间的差值。从而在保证用户体验的情况下,提高所述弹幕消息渲染的的流畅性和稳定性。
在上述实施例的基础上,本实施例中所述方法还包括:将所述弹幕消息处理子线程的初始化信息进行保存;当监听到所述弹幕消息处理子线程异常时,使用所述弹幕消息处理子线程的主线程关闭所述弹幕消息处理子线程;根据保存的所述初始化信息重新创建所述弹幕消息处理子线程。
具体地,为所述弹幕消息处理子线程绑定监听,创建异常捕获机制。当监听到异常时,重启所述弹幕消息处理子线程。具体将所述弹幕消息处理子线程的初始化信息进行保存,当监听到所述弹幕消息处理子线程异常时,使用所述弹幕消息处理子线程的主线程关闭所述弹幕消息处理子线程;根据保存的所述初始化信息重新创建所述弹幕消息处理子线程,从而保证所述弹幕消息处理子线程运行的稳定性。
在上述各实施例的基础上,本实施例中所述方法还包括:将所述弹幕消息和所述弹幕消息转换的HTML模板以字符串类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递;将除所述弹幕消息以外的其他消息以除所述字符串类型以外的其他类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递。
具体地,如果所述主线程与所述弹幕消息处理子线程之间的通信是对象,通讯组件对传递的所述对象进行了深度拷贝,然后进行传递,即所述对象的传递不是采用调用方式,对通讯有损耗。针对该问题,本实施例将弹幕消息与其他消息加以区分,将量级特别大的弹幕消息以及所述弹幕消息转换的HTML模版通过字符串类型进行传递,对其他的消息添加除字符串类型以外的类型加以区分。
为了方便后期代码的维护和拓展,将执行所述弹幕消息处理方法的函数进行封装,提供所述封装的一个接口。创建所述弹幕消息处理子线程句柄的代理事件对象,从而让调用者通过代理事件对象操作弹幕线程,避免直接操作句柄可能导致的问题,比如封装好的框架内部捕获到异常,需要重启所述弹幕消息处理子线程时,可能导致原有的弹幕消息处理器丢失或原来的弹幕消息句柄失效等问题。提供兼容跨域调用的工具函数,后期可以灵活的引用相应的业务实现文件。提供统一的弹幕消息解析和分发,便于扩展。
在本发明的另一个实施例中提供一种弹幕消息处理装置,图2为本发明实施例提供的弹幕消息处理装置整体结构示意图,该装置包括创建单元1、检索单元2、转换单元3和渲染单元4,其中:
所述创建单元1用于使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;所述检索单元2用于在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列,将检索结果对应的弹幕消息存入预先创建的栈中;所述转换单元3用于在所述栈中存在未处理的弹幕消息时,将所有所述未处理的弹幕消息转换为HTML模板;所述渲染单元4用于将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染。
具体地,所述创建单元1创建弹幕消息处理子线程,在所述弹幕消息处理子线程中创建将弹幕消息转换为HTML模板的库函数、弹幕消息处理任务队列和弹幕消息定时处理器。其中,所述弹幕消息处理任务队列用于缓存弹幕消息处理任务,所述弹幕消息定时处理器用于每隔预设时长对弹幕消息进行处理。使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程。所述检索单元2在所述弹幕消息处理子线程中,使用所述弹幕消息定时处理器每隔预设时长对所述弹幕消息处理任务队列进行检索。一个弹幕消息处理任务对应一条弹幕消息,获取从所述弹幕消息处理任务队列中检索到的弹幕消息处理任务对应的弹幕消息,将所述对应的弹幕消息存入预先创建的栈中。所述转换单元3判断所述栈中是否存在未处理的弹幕消息。若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板。所述渲染单元4将所述HTML模板发送给所述弹幕消息处理子线程的主线程。所述主线程根据所述HTML模板将所述未处理的弹幕消息渲染到弹幕区域,同时清空所述栈中已经处理的弹幕消息,等待所述弹幕消息定时处理器对所述弹幕消息处理任务队列的下一次检索。
本实施例一方面,通过将服务器上的静态资源转换成客户端上的临时url链接,解决了跨域问题;另一方面使用创建的弹幕消息处理子线程,将每隔预设时长从弹幕消息处理任务队列中检索到的弹幕消息处理任务对应的弹幕消息入栈,将所述栈中所有未处理的弹幕消息转换为HTML模板,所述弹幕消息处理子线程的主线程根据所述HTML模板对未处理的弹幕消息进行处理,从而实现了弹幕的批量处理,提高了弹幕的处理效率,解决了客户端卡顿的问题,提高了用户体验。
在上述实施例的基础上,本实施例中所述创建单元具体用于:向服务器发送ajaxGET请求,获取所述服务器上的静态资源;将所述静态资源转换成txt文本,使用所述txt文本创建二进制流;根据所述二进制流,生成临时url链接;根据所述临时url链接,使用webworker构造函数创建弹幕消息处理子线程。
在上述各实施例的基础上,本实施例中所述装置还包括初始化单元,用于为所述弹幕消息处理子线程创建系统消息通道,并加载所述弹幕消息处理子线程的依赖库;根据所述系统信息通道推送的所述弹幕消息处理子线程的依赖消息和所述依赖库,对所述弹幕消息处理子线程进行初始化。
在上述各实施例的基础上,本实施例中所述转正还包括跟踪单元,用于在弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间建立双向日志通道,以供所述主线程通过所述日志通道获取所述弹幕消息处理子线程中的日志信息,所述主线程根据所述日志信息跟踪所述弹幕消息处理子线程中的数据。
在上述各实施例的基础上,本实施例中所述检索单元还用于:当所述检索结果对应的弹幕消息的数量大于所述栈的预设深度,获取所述检索结果对应的弹幕消息的数量与所述预设深度之间的差值;将数量为所述差值的弹幕消息去除。
在上述实施例的基础上,本实施例中所述装置还包括重启单元,用于将所述弹幕消息处理子线程的初始化信息进行保存;当监听到所述弹幕消息处理子线程异常时,使用所述弹幕消息处理子线程的主线程关闭所述弹幕消息处理子线程;根据保存的所述初始化信息重新创建所述弹幕消息处理子线程。
在上述实施例的基础上,本实施例中所述装置还包括传递单元,用于将所述弹幕消息和所述弹幕消息转换的HTML模板以字符串类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递;将除所述弹幕消息以外的其他消息以除所述字符串类型以外的其他类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递。
本实施例提供一种弹幕消息处理设备,图3为本发明实施例提供的弹幕消息处理设备整体结构示意图,该设备包括:至少一个处理器31、至少一个存储器32和总线33;其中,
所述处理器31和存储器32通过所述总线33完成相互间的通信;
所述存储器32存储有可被所述处理器31执行的程序指令,所述处理器调用所述程序指令能够执行上述各方法实施例所提供的方法,例如包括:S1,使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;S2,在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列;S3,若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板;S4,将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:S1,使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;S2,在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列;S3,若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板;S4,将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的弹幕消息处理设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种弹幕消息处理方法,其特征在于,包括:
S1,使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;
S2,在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列,将检索结果对应的弹幕消息存入预先创建的栈中;
S3,若所述栈中存在未处理的弹幕消息,则将所有所述未处理的弹幕消息转换为HTML模板;
S4,将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染,同时清空所述栈中已经处理的弹幕消息,等待对所述弹幕消息处理任务队列的下一次检索。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1具体包括:
向服务器发送ajaxGET请求,获取所述服务器上的静态资源;
将所述静态资源转换成txt文本,使用所述txt文本创建二进制流;
根据所述二进制流,生成临时url链接;
根据所述临时url链接,使用webworker构造函数创建弹幕消息处理子线程。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤S1与S2之间还包括:
为所述弹幕消息处理子线程创建系统消息通道,并加载所述弹幕消息处理子线程的依赖库;
根据所述系统信息通道推送的所述弹幕消息处理子线程的依赖消息和所述依赖库,对所述弹幕消息处理子线程进行初始化。
4.根据权利要求1或2所述的方法,其特征在于,所述步骤S1与S2之间还包括:
在弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间建立双向日志通道,以供所述主线程通过所述日志通道获取所述弹幕消息处理子线程中的日志信息,所述主线程根据所述日志信息跟踪所述弹幕消息处理子线程中的数据。
5.根据权利要求1或2所述的方法,其特征在于,所述步骤S2还包括:
当所述检索结果对应的弹幕消息的数量大于所述栈的预设深度,获取所述检索结果对应的弹幕消息的数量与所述预设深度之间的差值;
将数量为所述差值的弹幕消息去除。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述弹幕消息处理子线程的初始化信息进行保存;
当监听到所述弹幕消息处理子线程异常时,使用所述弹幕消息处理子线程的主线程关闭所述弹幕消息处理子线程;
根据保存的所述初始化信息重新创建所述弹幕消息处理子线程。
7.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将所述弹幕消息和所述弹幕消息转换的HTML模板以字符串类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递;
将除所述弹幕消息以外的其他消息以除所述字符串类型以外的其他类型,在所述弹幕消息处理子线程和所述弹幕消息处理子线程的主线程之间进行传递。
8.一种弹幕消息处理装置,其特征在于,包括:
创建单元,用于使用服务器上弹幕处理的静态资源创建客户端上的临时url链接,使用所述临时url链接创建弹幕消息处理子线程;
检索单元,用于在所述弹幕消息处理子线程中每隔预设时长检索预先创建的弹幕消息处理任务队列,将检索结果对应的弹幕消息存入预先创建的栈中;
转换单元,用于在所述栈中存在未处理的弹幕消息时,将所有所述未处理的弹幕消息转换为HTML模板;
渲染单元,用于将所述HTML模板发送给所述弹幕消息处理子线程的主线程,以供所述主线程根据所述HTML模板对所述未处理的弹幕消息进行渲染,同时清空所述栈中已经处理的弹幕消息,等待对所述弹幕消息处理任务队列的下一次检索。
9.一种弹幕消息处理设备,其特征在于,包括:
至少一个处理器、至少一个存储器和总线;其中,
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710935595.3A CN107770563B (zh) | 2017-10-10 | 2017-10-10 | 一种弹幕消息处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710935595.3A CN107770563B (zh) | 2017-10-10 | 2017-10-10 | 一种弹幕消息处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107770563A CN107770563A (zh) | 2018-03-06 |
CN107770563B true CN107770563B (zh) | 2019-10-25 |
Family
ID=61267539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710935595.3A Active CN107770563B (zh) | 2017-10-10 | 2017-10-10 | 一种弹幕消息处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107770563B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108810633B (zh) * | 2018-06-28 | 2020-10-16 | 武汉斗鱼网络科技有限公司 | 弹幕消息传输方法、装置、设备及存储介质 |
CN109495782B (zh) * | 2018-10-30 | 2021-04-09 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的存储方法、系统和存储介质 |
CN109640154B (zh) * | 2018-12-14 | 2019-09-10 | 苏州好玩友网络科技有限公司 | 网页弹幕显示方法、装置、设备及存储介质 |
CN109788334A (zh) * | 2019-01-31 | 2019-05-21 | 北京字节跳动网络技术有限公司 | 弹幕处理方法、装置、电子设备及计算机可读存储介质 |
WO2020156035A1 (zh) * | 2019-01-31 | 2020-08-06 | 北京字节跳动网络技术有限公司 | 弹幕处理方法、装置、电子设备及计算机可读存储介质、以及图像处理方法、装置、电子设备及计算机可读存储介质 |
CN111026558B (zh) | 2019-11-25 | 2020-11-17 | 上海哔哩哔哩科技有限公司 | 基于微信小程序的弹幕处理方法和系统 |
CN111131910B (zh) * | 2020-01-02 | 2022-04-12 | 广州虎牙科技有限公司 | 弹幕实现方法、装置、电子设备和可读存储介质 |
CN113068057B (zh) * | 2021-03-19 | 2023-03-24 | 杭州网易智企科技有限公司 | 弹幕处理方法、装置、计算设备以及介质 |
CN113254492B (zh) * | 2021-07-07 | 2021-11-23 | 北京优锘科技有限公司 | 一种查询后台同步管理层级可视化对象的方法、装置和设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607427A (zh) * | 2013-10-30 | 2014-02-26 | 小米科技有限责任公司 | 信息展示方法和装置 |
CN105630992A (zh) * | 2015-12-25 | 2016-06-01 | 网易(杭州)网络有限公司 | 静态页面中的场景显示方法及装置 |
CN105741227A (zh) * | 2016-01-26 | 2016-07-06 | 网易(杭州)网络有限公司 | 渲染方法和装置 |
CN105808305A (zh) * | 2016-03-29 | 2016-07-27 | 北京小米移动软件有限公司 | 静态资源的加载方法和装置 |
CN106951573A (zh) * | 2017-04-27 | 2017-07-14 | 努比亚技术有限公司 | 一种直播互动数据加载方法、服务器及计算机可读介质 |
-
2017
- 2017-10-10 CN CN201710935595.3A patent/CN107770563B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103607427A (zh) * | 2013-10-30 | 2014-02-26 | 小米科技有限责任公司 | 信息展示方法和装置 |
CN105630992A (zh) * | 2015-12-25 | 2016-06-01 | 网易(杭州)网络有限公司 | 静态页面中的场景显示方法及装置 |
CN105741227A (zh) * | 2016-01-26 | 2016-07-06 | 网易(杭州)网络有限公司 | 渲染方法和装置 |
CN105808305A (zh) * | 2016-03-29 | 2016-07-27 | 北京小米移动软件有限公司 | 静态资源的加载方法和装置 |
CN106951573A (zh) * | 2017-04-27 | 2017-07-14 | 努比亚技术有限公司 | 一种直播互动数据加载方法、服务器及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107770563A (zh) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107770563B (zh) | 一种弹幕消息处理方法及装置 | |
CN104468629B (zh) | 一种批量发送消息的方法和装置 | |
CN110058987B (zh) | 用于对计算系统进行追踪的方法、设备和计算机可读介质 | |
CN109033115A (zh) | 一种动态网页爬虫系统 | |
CN105183470B (zh) | 一种自然语言处理系统化服务平台 | |
CN106411778B (zh) | 数据转发的方法及装置 | |
CN104040995B (zh) | 多媒体重定向方法以及多媒体服务器以及计算机系统 | |
Nguyen et al. | Why cloud applications are not ready for the edge (yet) | |
CN109254854A (zh) | 异步调用方法、计算机装置及存储介质 | |
CN107809350A (zh) | 获取http服务器性能数据的方法和装置 | |
CN111885021A (zh) | 基于传输协议的拟态通信方法、通信架构及可读存储介质 | |
CN107635001A (zh) | Web脚本异常处理方法和装置 | |
CN110442635A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20170223147A1 (en) | Communication method and system based on assembled communication protocol stack | |
CN103155530A (zh) | 包括将脚本命令下载至用户终端的网络-电信融合 | |
US10334014B2 (en) | Accessing connected service resources in a distributed application programming interface | |
CN104615597B (zh) | 浏览器中清除缓存文件的方法、装置和系统 | |
Hunter II | Distributed Systems with Node. js | |
CN108494864A (zh) | 一种数据处理方法、装置和机器可读存储介质 | |
CN102571868A (zh) | 一种即时通信的方法、装置及系统 | |
CN104270453B (zh) | 一种多级服务器间数据通信方法及服务器 | |
CN108614820B (zh) | 实现流式源数据解析的方法和装置 | |
CN105915587B (zh) | 内容推送方法、系统、以及缓存服务器 | |
CN107665148A (zh) | 一种基于Chromium的命名管道进程通信方法 | |
CN103414791A (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 |