一种直播平台榜单信息优化的方法、系统、服务器及存储介质与流程

文档序号:20949244发布日期:2020-06-02 20:02阅读:183来源:国知局
一种直播平台榜单信息优化的方法、系统、服务器及存储介质与流程

本发明涉及互联网pc客户端应用开发技术领域,具体涉及一种直播平台榜单信息优化的方法、系统、服务器及存储介质。



背景技术:

现有直播平台对于每一个观众进入到每一个直播间,直播间都会显示当前观众的贡献榜单,此榜单数据会显示观众的昵称,头像,贡献值等等,此数据量会非常大。每当观众进入直播间时,服务器都会依据直播间所有观众的贡献值来计算排名,并将排名信息发送给观众进行展示。现有的技术是一种粗略的方式,没有依据用户当前状态。例如榜单信息显示页面只有观众打开榜单信息才可以看到,而如果观众没有打开此时服务器也下发了榜单信息。同时对于一些大主播榜单信息会非常多,而对于终端设备来说,一次也只能显示前面的榜单信息,而后面的信息一个页面是看不完的。但每次每个观众进入直播间服务器都会给观众下发全量的榜单信息,对服务器资源造成了巨大压力,同时对服务器的下行网络带宽也造成了巨大压力。



技术实现要素:

鉴于现有技术存在的问题,本发明的目的是提供一种直播平台榜单信息优化的方法、系统、服务器及存储介质,本方法运用消息订阅的模式,客户端依据客户端当前的场景,如果需要榜单信息时,则发送订阅消息到服务器,服务器此时将榜单信息的前半部分发送给客户端,当客户端依据榜单进行滑动或者需要查看更多的榜单信息时,则发送订阅消息的区间范围,服务器发送依据客户端可以显示的范围数据。当客户端不需要订阅时则取消该消息。将服务器主动下发榜单消息设定为客户端依据用户的需求进行下发,需要榜单数据时才从服务器请求榜单相关信息,同时依据用户屏幕展示范围和大小动态请求榜单数据。

为了实现上述目的,本发明采用的技术方案为一种直播平台榜单信息优化的方法,所述方法包括以下步骤:

s1、客户端登录直播平台,获取客户端的屏幕分辨率;

s2、客户端直播平台向服务器发送订阅请求和屏幕分辨率进行订阅榜单数据,或向服务器发送取消订阅请求进行取消订阅榜单数据;

s3、服务器接收到客户端的订阅信息后,将客户端用户唯一id加入至订阅链表中,若用户订阅榜单数据,则下发榜单数据,若用户取消订阅,则删除用户唯一id;

s4、服务器依据步骤s3的订阅客户端下发对应的榜单数据,其中,所述下发的榜单数据还需根据对应客户端屏幕分辨率进行计算,获取最终榜单的数据并发送至客户端;

s5、客户端接收到最终榜单数据后,将在直播平台的榜单页面显示。

在上述技术方案中,所述步骤s1中获取屏幕分辨率包括以下步骤:

s11、通过api函数getsystemservice获取窗口管理服务器对象;

s12、通过窗口管理服务器对象调用函数getdefaultdisplay获取屏幕分辨率对象;

s13、通过屏幕分辨率对象获取屏幕的宽和高。

在上述技术方案中,所述步骤s3中服务器运用stl的数据结构链表进行存储订阅客户端用户的唯一id。

在上述技术方案中,所述stl数据结构链表对订阅用户进行存储包括以下步骤:

s31、定义存储订阅链表结构listsubscribeuserid,并定义接口接收用户订阅信息;

s32、接收用户订阅信息后,通过定义迭代器进行查询用户唯一id是否存在;

s33、若查询到所述订阅用户唯一id,则发送榜单数据,若未查询到用户唯一id,则加入订阅链表中后,发送榜单数据。

在上述技术方案中,所述stl数据结构链表对取消订阅用户唯一id的处理包括以下步骤:

s34、通过所述迭代器进行查询用于唯一id是否存在;

s35、若查询到所述订阅用户唯一id,则从订阅链表中删除。

在上述技术方案中,所述步骤s4中计算过程包括通过服务器接收的屏幕的高度信息,除以每条固定高度的榜单数据的,获取最终需要发送的榜单数据的数量。

在上述技术方案中,所述s5包括以下步骤:

s51、创建消息解析类的实例对象对获取的榜单数据进行解析;

s52、解析获取榜单数据的类型;

s53、将获取的详细数据在榜单页面逐条显示。

本发明还公开一种直播平台榜单信息优化系统,所述系统包括获取模块、设置模块、存储模块、计算模块及显示模块;

获取模块,用于客户端登录直播平台,获取客户端的屏幕分辨率;

设置模块,用于客户端直播平台向服务器发送订阅请求和屏幕分辨率进行订阅榜单数据,或向服务器发送取消订阅请求进行取消订阅榜单数据;

存储模块,用于服务器接收到客户端的订阅信息后,将客户端用户唯一id加入至订阅链表中,若用户订阅榜单数据,则下发榜单数据,若用户取消订阅,则删除用户唯一id;

计算模块,用于服务器依据订阅客户端下发对应的榜单数据,其中,所述下发的榜单数据还需根据对应客户端屏幕分辨率进行计算,获取最终榜单的数据并发送至客户端;

显示模块,用于客户端接收到最终榜单数据后,将在直播平台的榜单页面显示。

本发明公开一种直播平台榜单信息优化系统的服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述一种直播平台榜单信息优化的方法的步骤。

本发明公开一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述一种直播平台榜单信息优化的方法的步骤。

本发明一种直播平台榜单信息优化的方法、系统、服务器及存储介质,具有以下有益效果:本方法根据客户端用户的请求向服务器订阅榜单数据或者取消榜单数据,极大地减轻了服务器的压力和网络下行流量,同时客户端在不需要榜单数据时并不需要主动接收榜单数据,从而极大的优化了客户端的性能。

附图说明

图1为本发明实施例一提供的一种直播平台榜单信息优化的方法的流程图;

图2本发明实施例二提供一种直播平台榜单信息优化系统模块图;

图3为本发明实施例三提供的服务器的结构示意图。

具体实施方式

本发明提供一种直播平台榜单信息优化的方法、系统、服务器及存储介质。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明如图1所示实施例一提供一种直播平台榜单信息优化的方法,所述方法包括以下步骤,如图1所示:

s1、客户端登录直播平台,获取客户端的屏幕分辨率;

其中,一个终端设备,一个页面能显示的榜单个数是有限的,如对于ipad则可能一个页面显示10个榜单的观众,而对于一个手机设备则可能只能显示5个榜单的观众,因此客户端的屏幕分辨率会影响直播平台榜单数据的显示。当客户端在登录到直播平台时,则需要将客户端屏幕尺寸获取到并上报到服务器,服务器依据屏幕分辨率进行数据量的下发,具体获取屏幕分辨率包括以下步骤:

s11、通过api函数getsystemservice获取窗口管理服务器对象;

其中,windowmanagerwm=(windowmanager)getsystemservice(context.window_service),其中参数context.window_service表示获取窗口管理服务,得到的返回值是窗口管理服务器对象;

s12、通过窗口管理服务器对象调用函数getdefaultdisplay获取屏幕分辨率对象;其中,displaydisplay=wm.getdefaultdisplay(),从而得到窗口的分辨率对象display。

s13、通过屏幕分辨率对象获取屏幕的宽和高。heigth=display.getwidth();width=display.getheight();其中heigth则是屏幕的高,其中width则是屏幕的宽。

其中,wm.getdefaultdisplay().getheight().getwidth()得到的是整个屏幕窗口的高度以及屏幕窗口的宽度,包括状态栏、标题栏和布局。当屏幕方向切换时候,宽和高会改变。根据获取的屏幕宽高得到屏幕分辨率。

s2、客户端直播平台向服务器发送订阅请求和屏幕分辨率进行订阅榜单数据,或向服务器发送取消订阅请求进行取消订阅榜单数据;

其中,服务器不主动下发榜单信息至客户端,通过客户端登录到直播平台后,得到详细信息后客户端再进行展示,客户端依据客户端当前的场景,如果需要榜单信息时,则发送订阅消息到服务器,服务器此时将榜单信息的前半部分发送给客户端,当客户端依据榜单进行滑动或者需要查看更多的榜单信息时,则发送订阅消息的区间范围,服务器发送依据客户端可以显示的范围数据;

可选的,客户端向服务器订阅榜单的消息如下:type@=subscribe/id@=subtoplist/height@=420/width@=460,其中消息类型则是type@=subscribe表示订阅消息,其中id@=subtoplist则表示订阅榜单消息。其中height@=420表示屏幕尺寸的高度,其中width@=460表示屏幕尺寸的宽度。此消息发送至服务器后,服务器则认为客户端请求了服务器的榜单消息,那么服务器则后续会下发榜单信息到客户端中。

可选的,取消订阅榜单的消息如下:type@=unsubscribe/id@=subtoplist/,其中消息类型则是type@=unsubscribe表示取消订阅消息,其中id@=subtoplist则表示取消订阅榜单消息。当客户端离开榜单页面时,由于不在使用到榜单的消息,则可以进行取消榜单的订阅,从而服务器有榜单消息变更也不会在下发到客户端,客户端也不会再收到榜单消息。

通过设定订阅及取消订阅消息,极大地减轻服务器的压力和网络下行流量,同时客户端在不需要榜单数据时并不需要主动接收榜单数据,优化了客户端的性能。

s3、服务器接收到客户端的订阅信息后,将客户端用户唯一id加入至订阅链表中,若用户订阅榜单数据,则下发榜单数据,若用户取消订阅,则删除用户唯一id;

可选的,所述步骤s3中服务器运用stl的数据结构链表进行存储订阅客户端用户的唯一id。所述stl数据结构来存储所有需要下发的用户唯一id,当用户注册时则将用户的唯一id加入进来,当用户取消时则从中进行删除掉。对于用户存在的频繁的删除和加入的操作,运用stl数据结构进行存储用户唯一id更减轻了服务器的压力。

其中,所述stl数据结构链表对订阅用户进行存储包括以下步骤:

s31、定义存储订阅链表结构listsubscribeuserid,并定义接口接收用户订阅信息;其中,所述接口定义为voidadduserid(intuserid)。

s32、接收用户订阅信息后,通过定义迭代器进行查询用户唯一id是否存在;

s33、若查询到所述订阅用户唯一id,则发送榜单数据,若未查询到用户唯一id,则加入订阅链表中后,发送榜单数据。

其中,stl::list<int>::iteratoritr=listsubscribeuserid.begin(),初始化迭代器为链表的头结点;

for(;itr!=listsubscribeuserid.end();++itr){

然后通过一个for循环来进行遍历,直到链表的结尾。

if((*itr)==userid){如果链表中当前遍历的结点和需要加入的用户唯一id相等,则说明此用户已经在链表中。则不需要再加入直接返回。

return;

}

}

直到链表遍历结束都没有发现该用户在将该用户加入到链表中。

listsubscribeuserid.push_back(userid);

}。

所述stl数据结构链表对取消订阅用户唯一id的处理包括以下步骤:

s34、通过所述迭代器进行查询用于唯一id是否存在;

s35、若查询到所述订阅用户唯一id,则从订阅链表中删除。

可选的,voidsubuserid(intuserid){

首先编写一个迭代器来查询当前userid是否已经存在。

stl::list<int>::iteratoritr=listsubscribeuserid.begin();

初始化迭代器为链表的头结点。

for(;itr!=listsubscribeuserid.end();++itr){

然后通过一个for循环来进行遍历,直到链表的结尾。

if((*itr)==userid){如果链表中当前遍历的结点和需要加入的用户唯一id相等,则说明此用户已经在链表中。则从链表中进行删除。

listsubscribeuserid.erase(itr);

return;

}

}

s4、服务器依据步骤s3的订阅客户端下发对应的榜单数据,其中,所述下发的榜单数据还需根据对应客户端屏幕分辨率进行计算,获取最终榜单的数据并发送至客户端;

其中,所述步骤s4中计算过程包括通过服务器接收的屏幕的高度信息,除以每条固定高度的榜单数据的,获取最终需要发送的榜单数据的数量。

具体的,用户发送的订阅消息中,客户端上传了客户端的屏幕分辨率,服务器从而获取了客户端的高度,而对于每一条榜单数据所占据的高度是一定的,服务器则依据客户端的高度除以每一条的高度,则可以得到该客户端需要下发多少条榜单协议数据。

intnum=height/size;其中height是客户端上报的高度,size则是每一条榜单数据的高度,一个屏幕所能显示的榜单数目则是num。当客户端订阅榜单消息后,服务器则下发第一页的榜单数据给该客户端。而当客户端请求第二页榜单时,服务器则从榜单后续数据选择第二页的数据进行下发到客户端。

假设榜单消息存储在buf中,那么服务器则需要链路链表来下发所有的榜单消息。

stl::list<int>::iteratoritr=listsubscribeuserid.begin();

初始化迭代器为链表的头结点。

for(;itr!=listsubscribeuserid.end();++itr){

senddata((*itr),buff);

然后通过senddata接口来对改用户下发榜单详细数据。

}

}

s5、客户端接收到最终榜单数据后,将在直播平台的榜单页面显示。

其中,所述s5包括以下步骤:

s51、创建消息解析类的实例对象对获取的榜单数据进行解析;

s52、解析获取榜单数据的类型;

s53、将获取的详细数据在榜单页面逐条显示。

具体的,创建一个消息解析类datadecoder的实例对象。

datadecoder*pdecoder=newdatadecoder();对礼物的消息进行解析;

其中,解析的过程是将服务器的网络协议进行解码出协议的各个字段和内容,网络协议已进行编码,客户端接收消息后进行解码。

如消息:type@=loginreq/username@=189470287/ct@=2/password@=/roomid@=99999,其中,type@=loginreq表示消息的类型是登录请求消息,username@=189就是用户名称是189。

pdecoder->parse(buf);其中buf则表示收到的一条榜单网络消息。解析后获取该条消息的消息类型;

std::stringcount=std::string(pdecoder->getitem("uidcount"));

其中获取消息字段“uidcount”来得到榜单观众数目。并解析消息的榜单的具体详细数据类型:

stringname=pdecoder->getitemasstring(“name”);

stringpic=pdecoder->getitemasstring(“pic”);

intnnum=pdecoder->getitemasstring(“gift”);

其中name则是榜单中用户的昵称,pic则是榜单中用户的头像图片,gift则是榜单中用户的贡献值,客户端获取上述数据后,直播榜单页面进行展示。

本发明实施例二提供一种直播平台榜单信息优化系统,所述系统包括获取模块、设置模块、存储模块、计算模块及显示模块,如图2所示;

获取模块,用于客户端登录直播平台,获取客户端的屏幕分辨率;

设置模块,用于客户端直播平台向服务器发送订阅请求和屏幕分辨率进行订阅榜单数据,或向服务器发送取消订阅请求进行取消订阅榜单数据;

存储模块,用于服务器接收到客户端的订阅信息后,将客户端用户唯一id加入至订阅链表中,若用户订阅榜单数据,则下发榜单数据,若用户取消订阅,则删除用户唯一id;

计算模块,用于服务器依据订阅客户端下发对应的榜单数据,其中,所述下发的榜单数据还需根据对应客户端屏幕分辨率进行计算,获取最终榜单的数据并发送至客户端;

显示模块,用于客户端接收到最终榜单数据后,将在直播平台的榜单页面显示。

本发明实施例三如图3所示提供一种直播平台榜单信息优化系统的服务器结构示意图,所述实施例的服务器包括:处理器30、存储器31以及存储在所述存储器31中并可在所述处理器30上运行的计算机程序32。所述处理器30执行所述计算机程序32时实现上述各方法实施例中的步骤,所述处理器30执行所述计算机程序32时实现上述装置实施例中各模块的功能。

所述一种直播平台榜单信息优化系统的服务器可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备,所述一种直播平台榜单信息优化系统的服务器可包括,但不限于,处理器30、存储器31。图3仅仅是对此服务器的示例,并不构成对此服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,所述一种直播平台榜单信息优化系统的服务器还可以包括输入输出设备33、显示设备34等。

所述处理器30可以是中央处理单元,还可以是其他通用处理器、数字信号处理器、专用集成电路、现成可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器31可以是所述一种直播平台榜单信息优化系统的服务器的内部存储单元、硬盘或内存。所述存储器31也可以是所述服务器的外部存储设备,或配备的插接式硬盘,智能存储卡,安全数字卡,闪存卡等。

进一步地,所述存储器31还可以既包括所述服务器的内部存储单元也包括外部存储设备。所述存储器31用于存储所述计算机程序以及所述电子设备所需的其他程序和数据。所述存储器31还可以用于暂时地存储已经输出或者将要输出的数据。

所述的输入输出设备33可用于接收输入的数字或字符信息,具体的,输入输出设备33还可以包括但不限于键盘、鼠标、操作杆等中的一种和多种。

所述的显示设备34可用于显示由用户输入的信息或提供给用户信息以及终端的各种菜单,显示设备34可包括显示面板,可选的,可采用液晶显示器。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各实施例的模块、方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

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

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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