CN111355986B - 一种直播间中的消息处理方法、装置和存储介质 - Google Patents

一种直播间中的消息处理方法、装置和存储介质 Download PDF

Info

Publication number
CN111355986B
CN111355986B CN201811573335.7A CN201811573335A CN111355986B CN 111355986 B CN111355986 B CN 111355986B CN 201811573335 A CN201811573335 A CN 201811573335A CN 111355986 B CN111355986 B CN 111355986B
Authority
CN
China
Prior art keywords
message
client
live broadcast
pulled
broadcast room
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
Application number
CN201811573335.7A
Other languages
English (en)
Other versions
CN111355986A (zh
Inventor
张鹏飞
赵文
徐金光
梁文博
张良福
刘峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201811573335.7A priority Critical patent/CN111355986B/zh
Publication of CN111355986A publication Critical patent/CN111355986A/zh
Application granted granted Critical
Publication of CN111355986B publication Critical patent/CN111355986B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25866Management of end-user data
    • H04N21/25891Management of end-user data being end-user preferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/254Management at additional data server, e.g. shopping server, rights management server
    • H04N21/2541Rights Management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25866Management of end-user data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/262Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
    • H04N21/26291Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for providing content or additional data updates, e.g. updating software modules, stored at the client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4623Processing of entitlement messages, e.g. ECM [Entitlement Control Message] or EMM [Entitlement Management Message]

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Graphics (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本发明实施例公开了一种直播间中的消息处理方法、装置和存储介质;本发明实施例采用在消息拉取请求中携带加密凭证,并在接收到拉取请求后,对该加密凭证进行解析,以得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等信息,然后,在根据该时间确定该客户端有效时,根据消息序号确定房间号对应的直播间中是否存在待拉取消息;若存在,则将待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新;该方案不仅可以提高消息处理的及时性,避免消息延迟、以及减少直播间加入和退出的时延;而且,还可以降低操作和扩容的难度、以及节省资源。

Description

一种直播间中的消息处理方法、装置和存储介质
技术领域
本发明涉及通信技术领域,具体涉及一种直播间中的消息处理方法、装置和存储介质。
背景技术
随着互联网技术的发展和移动终端的普及,一些新兴的传播和社交方式也逐渐涌现出来,网络直播(简称直播)便是其中一种。
通过直播,可以实现多方异地实时互动,为了便于用户观看和进行互动,一般会为不同的直播分配不同的接入地址(或称为链接地址),俗称“直播房间”,简称直播间,不同的直播间具有不同的房间号以作标识,用户根据该房间号便可以进入相应的直播间中进行观看和互动。在现有技术中,当用户进入某个直播间时,一般会将该用户存入该直播间的群成员列表中,然后,当该用户在该直播间中发送消息如弹幕时,后台会先判断该用户是否位于群成员列表中,若在列表中才允许其发送消息,并根据群成员列表将该消息扩散至各个群成员;否则,若不在列表中,则禁止其发送消息。
在对现有技术的研究和实践过程中,本发明的发明人发现,当直播间成员非常多时,群成员列表也会变得巨大,不仅需要消耗较多的存储空间,而且群成员列表的获取和校验也会耗时较多,导致消息延迟;此外,由于直播间成员变更频繁,因此,群成员列表变更也会比较频繁和复杂,加大了直播间加入和退出的时延,且极有可能出现给已经退房的用户推送消息的情况,造成资源浪费。
发明内容
本发明实施例提供一种直播间中的消息处理方法、装置和存储介质;不仅可以提高消息处理的及时性,避免消息延迟、以及减少直播间加入和退出的时延;而且,还可以降低操作难度和节省资源。
本发明实施例提供一种直播间中的消息处理方法,包括:
接收客户端发送的消息拉取请求,所述消息拉取请求携带加密凭证;
对所述加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号;
根据所述时间确定所述客户端有效时,根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取消息;
若存在待拉取消息,则将所述待拉取消息发送给所述客户端,并对所述客户端中的加密凭证进行更新。
相应的,本发明实施例还提供一种直播间中的消息处理装置,包括:
接收单元,用于接收客户端发送的消息拉取请求,所述消息拉取请求携带加密凭证;
解析单元,用于对所述加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号;
确定单元,用于根据所述时间确定所述客户端有效时,根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取消息;
发送单元,用于在确定单元确定存在待拉取消息时,将所述待拉取消息发送给所述客户端,并对所述客户端中的加密凭证进行更新。
可选的,在一些实施例中,所述确定单元,具体可以用于根据所述时间确定所述客户端有效时,获取所述房间号对应的直播间的消息列表,根据所述消息序号查询消息列表,若消息列表中存在大于所述消息序号的其他消息序号,则确定所述直播间中存在待拉取消息;若消息列表中不存在大于所述消息序号的其他消息序号,则确定所述直播间中不存在待拉取消息。
可选的,在一些实施例中,所述发送单元可以包括发送子单元和刷新子单元,如下:
发送子单元,可以用于在确定单元确定存在待拉取消息时,从所述消息列表中获取大于所述消息序号的其他消息序号,获取所述其他消息序号对应的消息,得到至少一个待拉取消息,将所述至少一个待拉取消息进行封装,并将封装后的待拉取消息发送给所述客户端;
刷新子单元,可以用于对所述客户端中的加密凭证进行更新。
可选的,在一些实施例中,所述刷新子单元,具体用于将所述客户端最近一次拉取消息的时间更新为接收到所述消息拉取请求的时间,以及将所述客户端最近一次拉取到的消息的消息序号更新为所述待拉取消息的消息序号,根据更新后的时间和更新后的消息序号对所述加密凭证进行更新,将更新后加密凭证携带在封装后待拉取消息中,由发送子单元发送给所述客户端。
可选的,在一些实施例中,所述直播间中的消息处理装置还可以包括第一更新单元,如下:
第一更新单元,可以用于在确定单元确定不存在待拉取消息时,对所述客户端中的加密凭证进行更新。
可选的,在一些实施例中,所述直播间中的消息处理装置还可以包括暂存单元,如下:
所述暂存单元,可以用于在确定单元确定不存在待拉取消息时,将所述消息拉取请求暂存预设时长,在暂存期间,按照预设频率,触发确定单元执行根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取的消息的操作,直至确定存在待拉取消息为止。
可选的,在一些实施例中,所述直播间中的消息处理装置还可以包括第二更新单元,如下:
第二更新单元,可以用于在所述消息拉取请求暂存的时间超过所述预设时长时,删除暂存的消息拉取请求,并对所述客户端中的加密凭证进行更新。
可选的,在一些实施例中,所述直播间中的消息处理装置还可以包括获取单元;
所述解析单元,还可以用于对所述加密凭证进行解析,得到校验信息,所校验信息用于记录所述最近一次拉取到的消息的历史消息的拉取情况;
所述获取单元,用于根据所述校验信息确定存在历史消息拉取失败记录时,获取拉取失败的历史消息;
所述发送单元,还可以用于将获取到的历史消息发送给所述客户端。
可选的,在一些实施例中,所述校验信息为包括多个标记位的位图,每个标记位用于标识一条历史消息,并记录所标记的历史消息的拉取情况;
所述获取单元,具体可以用于对所述位图中的标记位进行检测,根据检测结果确定存在指示拉取消息丢失的标记位时,确定存在历史消息拉取失败记录,根据标记位的位置确定拉取失败的历史消息的消息序号,根据所述拉取失败的历史消息的消息序号获取拉取失败的历史消息。
可选的,在一些实施例中,所述直播间中的消息处理装置还可以包括发布单元,如下:
所述接收单元,还可以用于接收客户端发送的消息发布请求,所述消息发布请求中携带加密凭证和消息内容;
所述发布单元,可以用于根据所述加密凭证确定所述客户端有效时,对所述消息内容进行发布。
可选的,在一些实施例中,所述直播间中的消息处理装置还可以包括生成单元,如下:
所述接收单元,还可以用于接收客户端发送的直播间加入请求,直播间加入请求携带目标直播间的房间号;
所述生成单元,用于确定所述客户端符合预设条件时,获取所述目标直播间当前最新消息的消息序号、以及所述客户端加入所述目标直播间的时间,根据所述目标直播间的房间号、所述目标直播间当前最新消息的消息序号、以及所述客户端加入所述目标直播间的时间生成加密凭证;
所述发送单元,还可以用于将生成的加密凭证发送给所述客户端。
可选的,在一些实施例中,所述直播间中的消息处理装置还可以包括列表处理单元;
所述列表处理单元,用于获取直播间的成员列表,对所述客户端在所述成员列表中的有效期进行更新。
可选的,在一些实施例中,所述列表处理单元,还用于按照预设周期,获取直播间的成员列表,确定所述成员列表中存在有效期失效的客户端时,将失效的客户端从所述成员列表中删除。
此外,本发明实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种直播间中的消息处理方法中的步骤。
本发明实施例采用在消息拉取请求中携带加密凭证,然后,在接收到拉取请求后,对该加密凭证进行解析,以得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等信息,然后,在根据该时间确定该客户端有效时,根据消息序号确定房间号对应的直播间中是否存在待拉取消息;若存在,则将待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新;由于该方案无需以成员列表为依据,也无需在服务器侧存储、查询和更新消息的各种属性,如客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等,而是直接将这些信息携带在消息中,因此,不会受制于成员列表的大小和变更,可以大大提高消息处理的及时性,避免消息延迟、以及减少直播间加入和退出的时延;而且,由于在确定是否拉取消息时,还可以对该客户端有效性进行检测,且该有效性检测所依据的“时间”是通过解析加密凭证得到的,具有及时性,所以,不会出现给已经退房的用户推送消息的情况,所以,相对于现有技术而言,该方案还可以节省资源;此外,由于无需在服务器侧维护这些消息的属性,因此,可以大大降低了服务器侧部署和操作的难度,不仅运维简单,而且易于实现平行扩容。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的直播间中的消息处理方法的场景示意图;
图1b是本发明实施例提供的直播间中的消息处理方法的流程图;
图1c是本发明实施例提供的直播间中的消息处理方法中位图的示例图;
图1d是本发明实施例提供的直播间中的消息处理方法中位图的另一示例图;
图2a是本发明实施例提供的服务集群的示意图;
图2b是本发明实施例提供的直播间中的消息处理方法的另一流程图;
图2c是本发明实施例提供的直播间中的消息处理方法中直播界面的示例图;
图2d是本发明实施例提供的直播间中的消息处理方法的架构图;
图2e是本发明实施例提供的直播间中的消息处理方法中客户端与后台交互的示意图;
图2f是本发明实施例提供的直播间中的消息处理方法中消息扩散层的架构图;
图3a是本发明实施例提供的直播间中的消息处理装置的结构示意图;
图3b是本发明实施例提供的直播间中的消息处理装置的另一结构示意图;
图3c是本发明实施例提供的直播间中的消息处理装置的又一结构示意图;
图4是本发明实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种直播间中的消息处理方法、装置和存储介质。
其中,该直播间中的消息处理装置(简称消息处理装置)具体可以集成在服务器或服务器集群等设备中。
例如,以该消息处理装置集成在服务器中为例,参见图1a,当客户端加入直播间(向服务器发送直播间加入请求)时,该服务器可以为该客户端分配一加密凭证,此后,当该客户端需要拉取消息时,便可以在消息拉取请求中携带该加密凭证,其中,该加密凭证记录了直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等信息,这样,当服务器接收到该消息拉取请求后,便可以对其中携带的加密凭证进行解析,进而得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号,然后,再基于这些解析得到的信息进行消息的拉取,比如,在根据该“客户端最近一次拉取消息的时间”确定该客户端有效时,根据该消息序号确定该房间号对应的直播间中是否存在待拉取消息(即是否存在新的消息),若存在待拉取消息,则将该待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新,等等,通过这种在消息拉取请求中携带“消息状态”的方式,便可以无需在服务器侧保存相应的消息状态,因此,可以提高消息处理的及时性,避免时延,此外,也可以降低服务器侧的部署和操作难度,比如如果需要扩容,只需要增加服务器即可,而无需顾忌服务器中的各种“消息状态”,等等,实现较为简单。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从消息处理装置的角度进行描述,该消息处理装置具体可以集成在服务器或服务器集群等设备中。
本发明实施例提供一种直播间中的消息处理方法,包括:接收客户端发送的消息拉取请求,该消息拉取请求携带加密凭证,对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号,根据该时间确定该客户端有效时,根据该消息序号确定该房间号对应的直播间中是否存在待拉取消息,若存在待拉取消息,则将该待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新。
如图1b所示,该直播间中的消息处理方法的具体流程可以如下:
101、接收客户端发送的消息拉取请求,该消息拉取请求携带加密凭证(Key)。
例如,具体可以通过接入层接收客户端发送的携带加密凭证的消息拉取请求,并传送给消息扩散层。
其中,接入层用于连通客户端与服务器集群之间的通信,具体可以由接入服务器来实现,而消息扩散层用于对消息拉取请求中携带的加密凭证进行解析,并根据解析结果拉取消息,以提供给接入层,其具体可以由消息服务器来实现,后续实施例将进行详细说明,在此不作赘述。
其中,该加密凭证的数据结构可以根据实际应用的需求而定,比如,可以包括直播间的房间号(RoomID)、客户端最近一次拉取消息的时间(MsgTime)、以及客户端最近一次拉取到的消息的消息序号(SEQ),等等,具体如下:
A、直播间的房间号:主要用于标识直播场景下的一个直播间,在同一直播间内的客户端可以通过发送消息进行聊天。
B、客户端最近一次拉取消息的时间:用于标识客户端最近一次发送消息拉取请求的发送时间,一般可以以该消息拉取请求到达该消息处理装置(如服务器)的时间为准。
C、客户端最近一次拉取到的消息的消息序号:用于对指定直播间内的消息进行唯一标识,一般可以采用整数,且线性递增,即在先的消息的消息序号小于在后的消息。
可选的,该加密凭证还可以包括其他的信息,比如校验信息,如下:
D、该校验信息:可以用于记录该最近一次拉取到的消息的历史消息的拉取情况。
具体实现时,该校验信息可以是字符串、也可以是位图(bitmap),为了描述方便,在本发明实施例中,将均以该校验信息为位图为例进行说明。其中,该位图中可以包括多个标记位,每个标记位用于标识一条历史消息,并记录所标记的历史消息的拉取情况,比如拉取成功的为“1”,拉取失败的为“0”,或者拉取成功的为“0”,拉取失败的为“1”,又或者,拉取成功的为白色,拉取失败的为黑色,等等。
其中,历史消息指的是以当前消息(即最近一次拉取到的消息)为基准,过去N条消息,N为正整数,其可以根据实际应用的需求而定,比如,可以设置为32、64或100,等等。N与标记位的数量相适配,比如,若N为32,则需要设置32个标记位,若N为64个,则需要设置64个标记位,以此类推,等等。
例如,以N为32为例,若客户端最近一次拉取到的消息的消息序号为“33”,则此时位图需要包括32个标记位,用于分别标记消息序号为“1~32”的历史消息。若在历史上,消息序号为“25”和“29”的消息未拉取成功(比如丢失),则位图可如图1c所示,其中,第25和29个标记位标识为“0”,表示消息拉取失败。
又例如,以N为64为例,若客户端最近一次拉取到的消息的消息序号为“102”,则此时位图需要包括64个标记位,用于分别标记消息序号为“38~101”的历史消息(共64个历史消息)。若在历史上,消息序号为“100”的消息未拉取成功(比如丢失),则位图可如图1d所示,其中,第100个标记为标识为“黑色”,表示消息拉取失败。
可选的,该加密凭证可以在客户端加入直播间时,由运维人员分配给各个客户端,或者,也可以直接由该消息处理装置在客户端进入直播间时进行分配,即可选的,该直播间的消息处理方法还可以包括:
接收客户端发送的直播间加入请求,直播间加入请求携带目标直播间的房间号,确定该客户端符合预设条件时,获取该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间,根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间生成加密凭证,将生成的加密凭证发送给该客户端。
也就是说,客户端最近一次拉取消息的时间“MsgTime”的初始值为“该客户端加入该目标直播间的时间”,并根据客户端发送消息拉取请求进行不断更新;而客户端最近一次拉取到的消息的消息序号“SEQ”的初始值为“客户端加入该目标直播间时,该目标直播间当前最新消息的消息序号”,并在后续根据拉取到的消息的消息序号不断进行更新。
可选的,若加密凭证中包括校验信息,则在确定该客户端符合预设条件时,还可以获取校验信息,然后,再根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、该客户端加入该目标直播间的时间、以及校验信息生成加密凭证。
其中,该预设条件可以根据实际应用的需求进行设置,比如,若某个直播间只允许会员进入,则可以判别该客户端是否为会员,若为会员,则表明该客户端符合预设条件,否则,若不是会员,则表明该客户端不符合预设条件。又比如,若某个直播间只允许注册满一年的客户端进入,则此时,可以判别该客户端是否已注册满一年,若已注册满一年,则表明该客户端符合预设条件,否则,若未注册满一年,则表明该客户端不符合预设条件,以此类推,等等。
需说明的是,生成加密凭证的加密算法可以根据实际应用的需求进行设置,比如,对称性加密算法、非对称性加密算法或线性散列算法,等等。
102、对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号。
例如,具体由消息扩散层对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号。
其中,解析时所采用的解密算法与生成加密凭证时所采用的加密算法相对应,即,具体可以采用预设的解密算法对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号。
可选的,若加密凭证中还包括校验信息,则解析出来的信息还可以包括校验信息,即该直播间中的消息处理方法还可以包括:
对该加密凭证进行解析,得到校验信息。
103、根据“该客户端最近一次拉取消息的时间”确定该客户端有效时,根据该“客户端最近一次拉取到的消息的消息序号”确定该房间号对应的直播间中是否存在待拉取消息,若存在待拉取消息,则执行步骤104;可选的,若不存在待拉取消息,则可以执行步骤105A或105B。
例如,具体可以由消息扩散层根据“该客户端最近一次拉取消息的时间”确定该客户端有效时,根据该“客户端最近一次拉取到的消息的消息序号”确定该房间号对应的直播间在消息分发层中是否存在待拉取消息,若存在待拉取消息,则执行步骤104;可选的,若不存在待拉取消息,则可以执行步骤105A或105B。
比如,具体可以获取该房间号对应的直播间的消息列表,根据该消息序号查询消息列表,若消息列表中存在大于该消息序号的其他消息序号(因为消息序号是线性递增的),则确定该直播间中存在待拉取消息,于是执行步骤104,否则,若消息列表中不存在大于该消息序号的其他消息序号,则确定该直播间中不存在待拉取消息,可以执行步骤105。
其中,每个直播间可以分别设置一消息列表,以记录该直播间中消息的消息序号,比如,每接收到一条新的弹幕消息,则为该弹幕消息设置一消息序号以进行标识,并将该新设置的消息序号添加至消息列表中,等等。
104、在确定存在待拉取消息时,将该待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新。
例如,具体可以由消息扩散层从消息分发层中获取该待拉取消息,然后再由消息扩散层通过接入层将该待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新,等等。
其中,该待拉取消息可以单条消息,也可以是多条消息,可选的,为了节省传输资源和提高安全性,在发送待拉取消息给客户端时,可以对待拉取消息进行封装,即步骤“将该待拉取消息发送给该客户端”可以包括:
从该消息列表中获取大于该消息序号的其他消息序号,获取该其他消息序号对应的消息(比如弹幕消息),得到至少一个待拉取消息,然后,将该至少一个待拉取消息进行封装,并将封装后的待拉取消息发送给该客户端。
可选的,对客户端中的加密凭证进行更新主要是对其中的“时间”(即客户端最近一次拉取消息的时间)和消息序号(即客户端最近一次拉取到的消息的消息序号)进行更新。
其中,对该客户端中的“时间”和消息序号进行更新的方式可以有多种,比如,可以将该客户端最近一次拉取消息的时间更新为接收到所述消息拉取请求的时间,以及将该客户端最近一次拉取到的消息的消息序号更新为所述待拉取消息的消息序号,然后,根据更新后的时间(即更新后的“客户端最近一次拉取消息的时间”)和更新后的消息序号(即更新后的“客户端最近一次拉取到的消息的消息序号”)对该加密凭证进行更新(比如根据直播间的房间号、更新后的时间和更新后的消息序号生成新的加密凭证,得到更新后的加密凭证,等等),然后,将更新后加密凭证携带在封装后待拉取消息中,发送给该客户端;或者,也可以将更新后加密凭证单独发送给客户端,等等。
可选的,若在对加密凭证进行解析后,还得到校验信息,且校验信息指示存在拉取失败的“历史消息”,则此时,还可以获取拉取失败的历史消息,并发送给客户端;即该直播间中的消息处理方法还可以包括:
根据该校验信息确定存在历史消息拉取失败记录时,获取拉取失败的历史消息,将获取到的历史消息发送给该客户端。
例如,以该校验信息为包括多个标记位的位图为例,则此时,具体可以对该位图中的标记位进行检测,根据检测结果确定存在指示拉取消息丢失的标记位时,确定存在历史消息拉取失败记录,根据标记位的位置确定拉取失败的历史消息的消息序号,然后,根据该拉取失败的历史消息的消息序号获取拉取失败的历史消息,并将获取到的历史消息发送给该客户端。
需说明的是,在将获取到的历史消息发送给客户端时,除了可以将获取到的历史消息单独发送给客户端之外,还可以将获取到的历史消息与获取到的待拉取消息一起进行封装后,发送给客户端。
105、在确定不存在待拉取消息时,对该客户端中的加密凭证进行更新。
例如,具体可以由消息扩散层对加密凭证中的“时间(即客户端最近一次拉取消息的时间)”进行更新后,将更新后加密凭证发送给客户端。这样,当该客户端下次再拉取消息时,便可以携带该更新后加密凭证,以保证该客户端的有效性(若客户端长时间不活动的话则会被认为已失效)。
在确定不存在待拉取消息时,除了可以执行步骤105之外,可选的,为了减少客户端与网络侧之间的信令流程,还可以将该消息拉取请求暂存一段时间(比如由消息扩散层将该消息拉取请求暂存一段时间),看后续是否有新的消息到达,若长时间未有可拉取的消息,才对该客户端中的加密凭证进行更新,即可选的,在确定不存在待拉取消息时,该直播间中的消息处理方法还可以包括,如下:
在确定不存在待拉取消息时,将该消息拉取请求暂存预设时长,在暂存期间,按照预设频率,返回执行根据该消息序号确定该房间号对应的直播间中是否存在待拉取的消息的步骤(即步骤103),直至确定存在待拉取消息为止。
在将该消息拉取请求暂存预设时长之后,若该消息拉取请求暂存的时间超过该预设时长,则可以删除暂存的消息拉取请求,然后对该客户端中的加密凭证进行更新。比如,具体可以由消息扩散层对加密凭证中的“时间(即客户端最近一次拉取消息的时间)”进行更新后,将更新后加密凭证发送给客户端。
可选的,客户端还可以根据自身的需求进行消息如弹幕消息的发布,即该直播间中的消息处理方法还可以包括:
接收客户端发送的消息发布请求,该消息发布请求中携带加密凭证和消息内容,根据该加密凭证确定该客户端有效时,对该消息内容进行发布。
这样,其他客户端便可以基于自身的加密凭证从该消息处理装置中拉取到该发布的消息内容,其中,其他客户端拉取该消息内容的方式与该客户端拉取消息相同,在此不作赘述。
可选的,为了便于用户了解到当前直播间中的成员情况,也可以设置一成员列表,以在直播过程中,进行展示或供用户查询。为了保证该成员列表的可靠性,可以为该成员列表中的客户端设置相应的有效期,并定时进行更新,即在步骤“接收客户端发送的消息拉取请求”之后,该直播间中的消息处理方法还可以包括:
获取直播间的成员列表,对该客户端在该成员列表中的有效期进行更新。
可选的,为了避免成员列表过大,可以将该成员列表设置为固定大小,并定时对该成员列表中的客户端的有效期进行检测,若客户端的有效期过期,则将该客户端从该成员列表中删除,即该直播间中的消息处理方法还可以包括:
按照预设周期,获取直播间的成员列表,确定该成员列表中存在有效期失效的客户端时,将失效的客户端从该成员列表中删除。
此外,当检测到有新客户端加入该直播间时,也可以将该新客户端添加至成员列表中,当然,如果成员列表已满,则也可以不进行添加,即该直播间中的消息处理方法还可以包括:
在接收到客户端发送的直播间加入请求时,将该客户端添加至成员列表中;或者,
在接收到客户端发送的直播间加入请求,且确定成员列表中的客户端数量未超过设定值时,将该客户端添加至成员列表中。
其中,该设定值可以根据实际应用的需求进行设置,在此不作赘述。
由上可知,本实施例采用在消息拉取请求中携带加密凭证,然后,在接收到拉取请求后,对该加密凭证进行解析,以得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等信息,然后,在根据该时间确定该客户端有效时,根据消息序号确定房间号对应的直播间中是否存在待拉取消息;若存在,则将待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新;由于该方案无需以成员列表为依据,也无需在服务器侧存储、查询和更新消息的各种属性,如客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等,而是直接将这些信息携带在消息中,因此,不会受制于成员列表的大小和变更,可以大大提高消息处理的及时性,避免消息延迟、以及减少直播间加入和退出的时延;而且,由于在确定是否拉取消息时,还可以对该客户端有效性进行检测,且该有效性检测所依据的“时间”是通过解析加密凭证得到的,具有及时性,所以,不会出现给已经退房的用户推送消息的情况,所以,相对于现有技术而言,该方案还可以节省资源;此外,由于无需在服务器侧维护这些消息的属性,因此,可以大大降低了服务器侧部署和操作的难度,不仅运维简单,而且易于实现平行扩容,比如在应对超大活动时,只需要增加服务器即可满足需求。
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
在本实施例中,将以该消息处理装置具体集成在服务器集群中为例进行说明。其中,该服务器集群可以包括多种类型的服务器,每种类型的服务器的数量可以根据具体应用场景而定,而且,这些服务器可以部署在不同的地域或机房,或使用不同的网络供应商。
按照不同的功能划分,该服务器集群可以划分为接入层、业务逻辑层、消息扩散层和消息分布层等结构,其中,不同的层次可以采用不同类型的服务器来实现。例如,如图2a所示,以该服务器集群包括至少一个接入服务器、至少一个业务服务器、至少一个消息服务器和至少一个分发服务器为例,其中,各种类型的服务器的功能可以如下:
(1)接入服务器;
接入服务器主要承担该服务器集群的“接入层”功能,用于连通客户端与服务器集群之间的通信,比如,可参见图2b~图2d。
例如,如图2a~图2c所示,接入服务器(即接入层)具体可以接收客户端发送的各类请求,如直播间加入请求、消息发布请求和消息拉取请求等,并将接收到的各类请求传送给业务服务器(即业务逻辑层)或消息服务器(即消息扩散层),比如,将直播间加入请求和消息发布请求发送给业务服务器,而将消息拉取请求传送给消息服务器,等等,然后,在接收到业务服务器返回的加密凭证时,将加密凭证发送给客户端,以及在接收到消息服务器返回的消息(即拉取到的消息,如待拉取消息和/或历史消息)时,将接收到的消息发送给客户端。
(2)业务服务器;
业务服务器主要承担该服务器集群的“业务逻辑层”功能,用于对客户端的身份进行鉴权、以及对客户端的行为进行管控,比如,可参见图2b和图2c。
例如,如图2a~图2c所示,业务服务器(即业务逻辑层)可以接收接入服务器(即接入层)传送的直播间加入请求或消息发布请求,若接收到直播间加入请求,则业务服务器可以为该请求加入直播间的客户端分配加密凭证(参见图2c),比如在确定该客户端符合预设条件时,生成加密凭证,然后将生成的加密凭证发送给客户端;若接收到消息发布请求,则对该消息发布请求中的加密凭证进行解析,根据解析结果确定该客户端是否有效,才将消息发布请求中携带的消息内容发送给分发服务器。
(3)消息服务器;
消息服务器主要承担该服务器集群的“消息扩散层”功能,比如,参见图2a~图2d,该消息服务器(即消息扩散层)用于接收接入服务器(即接入层)传送的消息拉取请求,对消息拉取请求中携带的加密凭证进行解析后,根据解析结果比如直播间的房间号、客户端最近一次拉取消息的时间、客户端最近一次拉取到的消息的消息序号、以及校验信息等信息,从分发服务器(即消息分发层)中拉取消息(即订阅消息),并将拉取到的消息通过接入服务器发送给客户端。
需说明的是,不同消息服务器之间无关联,可平行扩展,也就是说,这些消息服务器可以分布在不同的地域、机房、或使用不同的网络供应商,等等。比如,如图2d所示,以消息服务器包括消息服务器1、消息服务器2……,消息服务器n为例,则消息服务器1、消息服务器2……,消息服务器n之间彼此独立,该“彼此独立”既可以包括操作上的“彼此独立”,彼此独立地“拉消息”,以及彼此独立地从消息分发层(即分发服务器)中订阅消息等,也包括物理上和性能上的“彼此独立”,譬如消息服务器1位于深圳,网络供应商为A,消息服务器2位于北京,网络供应商为B,而消息服务器n位于西安,网络供应商为C,以此类推,等等。
其中,n为正整数,其取值可以根据实际应用的需求而定,比如,对于超大型的直播场景,则采用较多数量的消息服务器,而对于较为小型的直播场景,则采用较少数量的消息服务器,等等。
(4)分发服务器;
分发服务器主要承担该服务器集群的“消息分发层”的功能,主要用于接收业务服务器发送消息内容(即客户端请求发布的消息),然后,在消息服务器拉取消息时,将相应的消息内容提供给消息服务器,比如,可参见图2a和图2b。
基于上述服务器集群的架构,以下将客户端A加入直播间并发布消息,而位于直播间内的客户端B拉取该消息为例,对其执行流程进行详细说明。
如图2e所示,一种直播间中的消息处理方法,具体流程可以如下:
201、客户端A向服务器集群发送直播间加入请求,其中,该直播间加入请求携带目标直播间的房间号。
例如,以客户端A请求加入房间号为“12345”的直播间为例,则此时,客户端A向服务器集群直播间加入请求,并在该直播间加入请求携带房间号“12345”。
202、服务器集群的接入服务器在接收到该直播间加入请求后,将该直播加入请求传送给业务服务器。
除了可以由同一或若干个业务服务器业务对所有直播间统一进行管理职位,可选的,为了便于管理,也可以设置不同的直播间对应不同的业务服务器。若各直播间均有其对应的业务服务器,则此时,接入服务器可以根据该直播间加入请求中携带的房间号如“12345”,确定对应的业务服务器作为目标服务器,并将该直播加入请求传送给该目标业务服务器。
203、业务服务器确定该客户端A符合预设条件时,获取该目标直播间当前最新消息的消息序号、客户端A加入该目标直播间的时间、以及校验信息等。
其中,该预设条件可以根据实际应用的需求进行设置,比如,若直播间“12345”只允许会员进入,则业务服务器可以判别该客户端A是否为会员,若为会员,则表明客户端A符合预设条件,业务服务器获取该直播间“12345”当前最新消息的消息序号、客户端A加入直播间“12345”的时间、以及校验信息等;否则,若客户端A不是会员,则表明客户端A不符合预设条件,以此类推,等等。
其中,校验信息可以是字符串、也可以是位图(bitmap),为了描述方便,在本实施例中,以该校验信息为位图为例进行说明。其中,该位图中可以包括多个标记位,每个标记位用于标识一条历史消息,并记录所标记的历史消息的拉取情况,比如拉取成功的为“1”,拉取失败的为“0”,或者拉取成功的为“0”,拉取失败的为“1”,又或者,拉取成功的为白色,拉取失败的为黑色,等等。
其中,历史消息指的是以当前消息(即最近一次拉取到的消息)为基准,过去N条消息,N为正整数,其可以根据实际应用的需求而定,比如,可以设置为32、64或100,等等。
204、业务服务器根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、客户端A加入该目标直播间的时间、以及校验信息等生成加密凭证“KEY-A”,并将生成的加密凭证“KEY-A”通过接入服务器发送给该客户端A。
例如,业务服务器可以获取预设的加密算法,根据加密算法对目标直播间的房间号、该目标直播间当前最新消息的消息序号、客户端A加入该目标直播间的时间、以及校验信息等进行计算,得到加密凭证“KEY-A”。
需说明的是,生成加密凭证的加密算法可以根据实际应用的需求进行设置,比如,对称性加密算法、非对称性加密算法或线性散列算法,等等。
可选的,为了便于直播间中的观众可以随时了解到直播间中成员的变动情况,还可以设置一成员列表,这样,在直播过程中,便可以基于该成员列表在直播画面中对部分成员列表进行展示或供用户进行查询,比如,参见图2f,可以将该成员列表发送给各个客户端,并在各个客户端的直播画面中显示部分成员列表,以供用户查看。
可选的,为了避免该成员列表过大,节省存储资源,可以将该成员列表中的客户端数量进行限制,比如设置为1000个,等等。
若设置了成员列表,则业务服务器在检测到有新客户端如客户端A加入该直播间时,还将该新客户端如客户端A添加至成员列表中,当然,如果成员列表对客户端数量进行了限制,且当前成员列表的客户端数量已满(比如已经为1000个),则也可以将客户端A添加至成员列表中。
可选的,当业务服务器在检测到有新客户端如客户端A(假设客户端A的用户名为“张三”)加入该直播间时,还可以生成相应的进群通知,如“欢迎张三进入直播间”等,这样,各个客户端在拉取到该进群通知后,便可以在各自的直播画面中对该进群通知进行展示,比如,参见图2f。
205、客户端A接收服务器集群返回的加密凭证后,在用户(即使用客户端A的用户)需要发言时,客户端A根据用户输入的消息内容生成消息发布请求,并向服务器集群发送该消息发布请求,其中,该消息发布请求携带加密凭证“KEY-A”和消息内容等信息。
206、服务器集群的接入服务器在接收到客户端A发送的消息发布请求后,将该消息发布请求发送给业务服务器。
207、业务服务器根据该消息发布请求中携带的加密凭证“KEY-A”确定客户端A是否有效,若有效,则将该消息发布请求中的消息内容发送给分发服务器,以进行消息发布,然后执行步骤208;若无效,则表明该客户端A不具有发言权限,拒绝该消息发布请求。
例如,业务服务器可以判断该加密凭证“KEY-A”是否与客户端A相匹配,且该加密凭证“KEY-A”中的“时间”是否位于有效期内,若该加密凭证“KEY-A”与客户端A相匹配,且“时间”是否位于有效期内,则确定该客户端A有效,可以将该消息发布请求中的消息内容发送给分发服务器,以进行消息发布;否则,若该加密凭证“KEY-A”与客户端A不匹配,或“时间”不位于有效期内,则表明该客户端A不具有发言权限,拒绝该消息发布请求。
其中,该有效期可以根据实际应用的需求进行设置,在此不作赘述;另外,需说明的是,也可以采用其他的策略来确定客户端A是否有效,以上仅仅为示例,不作为对判断客户端A是否有效的限定。
208、分发服务器在接收到业务服务器发送的客户端A所发布的消息内容后,对该消息内容进行保存,以供该直播间中的其他客户端,如客户端B进行拉取(即获取)。
可选的,每个直播间可以分别设置一消息列表,以记录该直播间中消息的消息序号,比如,若该消息列表中最大的消息序号为“101”,则在将客户端A发送的这一消息内容进行发布时,可以为该消息设置消息序号“102”,并将该新设置的消息序号“102”添加至消息列表中,等等。
209、客户端B向服务器集群发送消息拉取请求,其中,该消息拉取请求携带加密凭证“KEY-B”。
其中,该加密凭证“KEY-B”包括直播间的房间号、客户端B最近一次拉取消息的时间、客户端B最近一次拉取到的消息的消息序号和校验信息等信息。该加密凭证“KEY-B”最初由业务服务器在客户端B加入直播间时,分配给客户端B,并基于客户端B与该服务器集群的互动(如发送消息拉取请求)而不断进行更新。具体的分配方法与分配“KEY-A”给客户端A类似,详见前面的实施例,在此不作赘述。
210、服务器集群的接入服务器在接收到客户端B发送的消息拉取请求后,将该消息拉取请求发送给消息服务器。
比如,接入服务器在接收到该消息拉取请求后,可以按照预设策略如任选一台消息服务器作为目标消息服务器,然后,将该消息拉取请求发送给该目标消息服务器。
其中,该预设策略可以根据实际应用的需求而定,比如,可以基于地域或网络供应商来选择相应的消息服务器作为目标消息服务器,或者,也可以基于各个消息服务器的负载来进行选择,等等,在此不作赘述。
211、消息服务器对该消息拉取请求中携带的加密凭证“KEY-B”进行解析,得到解析结果,如直播间的房间号、客户端B最近一次拉取消息的时间、客户端B最近一次拉取到的消息的消息序号、以及校验信息等信息。
其中,解析时所采用的解密算法与生成加密凭证时所采用的加密算法相对应,即,具体可以采用预设的解密算法对该加密凭证进行解析,得到直播间的房间号、客户端B最近一次拉取消息的时间、客户端B最近一次拉取到的消息的消息序号、以及校验信息等信息。
212、消息服务器根据客户端B最近一次拉取消息的时间确定客户端B有效时,根据解析结果中的直播间的房间号确定对应的直播间。
例如,若客户端B最近一次拉取消息的时间位于有效期内,且直播间的房间号为“12345”,则此时,消息服务器可以确定对应的直播间为“12345”。
其中,确定客户端B最近一次拉取消息的时间是否位于有效期内的方式可以有多种:
例如,可以设置“最近一次拉取消息的时间”与当前时刻的时间差小于预设时长,则确定该“最近一次拉取消息的时间”位于有效期内。比如,以该预设时长为30分钟为例,若“最近一次拉取消息的时间”为2018年1月1日12:00,当前时刻为2018年1月1日12:10分,由于“最近一次拉取消息的时间”距离当前时刻只有10分钟,小于30分钟,因此,可以确定该“最近一次拉取消息的时间”位于有效期内。
又例如,可以设置以有效时间范围,并根据直播的推进不断对该有效时间范围进行更新,比如,若该有效时间范围为“2018年1月1日12:00~12:30”分,则若客户端B的“最近一次拉取消息的时间”为2018年1月1日12:10,那么,便可以确定该客户端B的“最近一次拉取消息的时间”位于有效期内,以此类推,等等。
当然,还可以采用其他的方式,在此不作赘述。
213、消息服务器根据客户端B最近一次拉取到的消息的消息序号确定该直播间中是否存在待拉取消息,若存在待拉取消息(Y,YES),则执行步骤214;可选的,若不存在待拉取消息(N,NO),则可以执行步骤215。
例如,以房间号为“12345”,且客户端B最近一次拉取到的消息的消息序号为“101”为例,则此时,消息服务器可以获取房间号“12345”对应的直播间的消息列表,根据该消息序号查询消息列表,若消息列表中存在大于该消息序号“101”的其他消息序号(比如存在消息序号“102”),则确定该直播间中存在待拉取消息,于是执行步骤214,否则,若消息列表中不存在大于该消息序号“101”的其他消息序号(比如当前最大的消息序号为“101”),则确定该直播间中不存在待拉取消息,可以执行步骤215。
需说明的是,该待拉取消息可以是系统的各类通知如进群通知、也可以是系统消息,还可以是其他客户端发送的各类普通消息如弹幕消息、图文消息和/或语音消息等。
214、消息服务器在确定存在待拉取消息时,从分发服务器获取该待拉取消息,通过接入服务器将该待拉取消息发送给客户端B,并对该客户端B的加密凭证“KEY-B”进行更新,然后执行步骤216。
例如,消息服务器可以从该消息列表中获取大于该消息序号“101”的其他消息序号如“102”,并获取该其他消息序号对应的消息,得到至少一个待拉取消息,然后,将该至少一个待拉取消息进行封装,得到封装后的待拉取消息。
此外,消息服务器还可以对客户端B最近一次拉取消息的时间更新为消息服务器接收到该消息拉取请求的时间,以及将该客户端B最近一次拉取到的消息的消息序号“101”更新为该待拉取消息的消息序号“102”,然后,根据更新后的时间和更新后的消息序号对该加密凭证“KEY-B”进行更新,得到更新后的加密凭证“KEY-B”,此后,便可以将该更新后的加密凭证“KEY-B”携带在封装后待拉取消息中,发送给该客户端。
需说明的是,如果有多条待拉取消息,则取其中消息序号最大的作为更新后的消息序号,比如存在“102”和“103”,则将客户端B最近一次拉取到的消息的消息序号“101”更新为该待拉取消息的消息序号“103”。以此类推,等等。
可选的,若校验信息指示存在拉取失败的“历史消息”,则此时,还可以获取拉取失败的历史消息,并发送给客户端。
例如,以该校验信息为包括多个标记位的位图为例,消息服务器可以对该位图中的标记位进行检测,根据检测结果确定存在指示拉取消息丢失的标记位时,确定存在历史消息拉取失败记录,比如,参见图1d,由图1d中可以看出,位图中标记位“100”存在“拉取消息丢失”的情况(当前待拉取消息的消息序号为“102”),因此,此时可以根据标记位的位置确定拉取失败的历史消息的消息序号“100”,然后,根据该拉取失败的历史消息的消息序号“100”获取拉取失败的历史消息,譬如可以从分发服务器中获取消息序号“100”的历史消息,并将获取到的历史消息发送给接入服务器,由接入服务器发送给该客户端B。
在将该拉取失败的历史消息发送给客户端B后,还需要对客户端B中的校验信息进行更新,比如将位图中相应的标记位“100”设置为“不存在拉取消息丢失”的情况。
需说明的是,在将获取到的历史消息发送给客户端时,除了可以将获取到的历史消息单独发送给客户端之外,还可以将获取到的历史消息与获取到的待拉取消息一起进行封装后,发送给客户端。
215、消息服务器在确定不存在待拉取消息时,将该消息拉取请求暂存预设时长,在暂存期间,按照预设频率,返回执行根据客户端B最近一次拉取到的消息的消息序号确定该直播间中是否存在待拉取消息的步骤(即返回执行步骤213),直至确定存在待拉取消息,并将待拉取消息发送给客户端B为止。
在将该消息拉取请求暂存预设时长之后,若该消息拉取请求暂存的时间超过该预设时长,则可以删除暂存的消息拉取请求,并对该客户端B中的加密凭证进行更新。比如,具体可以由消息扩散层对加密凭证中的“客户端B最近一次拉取消息的时间”进行更新后,将更新后加密凭证发送给客户端B。
216、客户端B在直播画面中显示待拉取消息。
例如,如图2f所示,若该待拉取消息的消息内容为客户端A发送的弹幕“好精彩阿~”,则可以在直播画面中显示弹幕“好精彩阿~”;若该待拉取消息的消息内容为客户端C发送的弹幕“这是什么?”,则可以在直播画面中显示弹幕“这是什么?”;若该待拉取消息的消息内容为客户端A发送的弹幕消息“你们好啊~”和客户端D发送的弹幕消息“Aaaaa~”,则可以在直播画面中显示弹幕“你们好啊~”和“Aaaaa~”;若该待拉取消息的消息内容为系统消息“李四赠送游艇一艘”,则可以在直播画面中显示系统消息“李四赠送游艇一艘”;若该待拉取消息的消息内容为点赞消息,则可以在直播画面的相应位置中显示“点赞”样式的信息,以此类推,等等。
可选的,若已设置了成员列表,则为了保证该成员列表的可靠性,可以为该成员列表中的客户端设置相应的有效期,并由业务服务器定时进行更新,具体可以参见步骤217,如下:
217、业务服务器获取直播间的成员列表,对该客户端在该成员列表中的有效期进行更新。
其中,更新的周期可以根据实际应用的需求而定,比如,可以没20分钟更新一次,等等。
可选的,为了避免成员列表过大,可以将该成员列表设置为固定大小,并定时对该成员列表中的客户端的有效期进行检测,若客户端的有效期过期,则将该客户端从该成员列表中删除,即该直播间中的消息处理方法还可以包括步骤218,如下:
218、业务服务器按照预设周期,获取直播间的成员列表,确定该成员列表中存在有效期失效的客户端时,将失效的客户端从该成员列表中删除。
其中,该设定值可以根据实际应用的需求进行设置,在此不作赘述。
需说明的是,步骤217和218为可选步骤,且步骤217和218两者之间的执行顺序,以及步骤217和218与其他步骤之间的执行顺序,可以不分先后,图2e中的执行流程仅仅为示例,不作为限定。
还需说明的是,其他客户端,如客户端C、客户端D……客户端N拉取消息的方式也与客户端B类似,在此不作赘述。
由上可知,本实施例采用在客户端加入直播时,为客户端分配一加密凭证,然后,在客户端发布消息或拉取消息时,将该加密凭证携带在请求中,以作为客户端发布或拉取消息的依据;其中,该加密凭证不仅可以作为鉴权信息,而且还实时记录了客户端的发布和拉取消息的情况,所以,该方案无需以成员列表为依据,也无需在服务器侧存储、查询和更新消息的各种属性,如客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等,也就是说,该方案相对于现有技术而言,不会受制于成员列表的大小和变更,可以大大提高消息处理的及时性,避免消息延迟、以及减少直播间加入和退出的时延;而且,由于在确定是否拉取消息时,还可以对该客户端有效性进行检测,且该有效性检测所依据的“时间”是通过解析加密凭证得到的,具有及时性,所以,不会出现给已经退房的用户推送消息的情况,所以,相对于现有技术而言,该方案还可以节省资源;此外,由于无需在服务器侧维护这些消息的属性,因此,可以大大降低了服务器侧部署和操作的难度,不仅运维简单,而且易于实现平行扩容,比如在应对超大活动时,只需要增加服务器即可满足需求。
为了更好地实施以上方法,本发明实施例还提供一种直播间中的消息处理装置,简称消息处理装置。该消息处理装置具体可以集成在服务器或服务器集群等设备中。
例如,如图3a所示,该消息处理装置可以包括接收单元301、解析单元302、确定单元303和发送单元304,如下:
(1)接收单元301;
接收单元301,用于接收客户端发送的消息拉取请求,该消息拉取请求携带加密凭证。
其中,该加密凭证的数据结构可以根据实际应用的需求而定,比如,可以包括直播间的房间号(RoomID)、客户端最近一次拉取消息的时间(MsgTime)、以及客户端最近一次拉取到的消息的消息序号(SEQ),此外,还可以包括其他的信息,比如校验信息等,其中,该校验信息用于记录该最近一次拉取到的消息的历史消息的拉取情况,具体可参见前面的实施例。
(2)解析单元302;
解析单元302,用于对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号。
例如,解析单元302,具体可以用于采用预设的解密算法对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号。
可选的,若加密凭证中还携带校验信息,则此时解析单元302还可以解析得到校验信息,即:
解析单元302,还可以用于对该加密凭证进行解析,得到校验信息。
(3)确定单元303;
确定单元303,用于根据该时间(即客户端最近一次拉取消息的时间)确定该客户端有效时,根据该消息序号确定该房间号对应的直播间中是否存在待拉取消息。
例如,该确定单元303,具体可以用于根据该时间确定该客户端有效时,获取该房间号对应的直播间的消息列表,根据该消息序号查询消息列表,若消息列表中存在大于该消息序号的其他消息序号,则确定该直播间中存在待拉取消息;若消息列表中不存在大于该消息序号的其他消息序号,则确定该直播间中不存在待拉取消息。
其中,每个直播间可以分别设置一消息列表,以记录该直播间中消息的消息序号,比如,每接收到一条新的弹幕消息,则为该弹幕消息设置一消息序号以进行标识,并将该新设置的消息序号添加至消息列表中,等等。
(4)发送单元304;
发送单元304,用于在确定单元303确定存在待拉取消息时,将该待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新。
例如,该发送单元304可以包括发送子单元和刷新子单元,如下:
发送子单元,可以用于在确定单元303确定存在待拉取消息时,从该消息列表中获取大于该消息序号的其他消息序号,获取该其他消息序号对应的消息,得到至少一个待拉取消息,将该至少一个待拉取消息进行封装,并将封装后的待拉取消息发送给该客户端;
刷新子单元,可以用于对该客户端中的加密凭证进行更新。
比如,该刷新子单元,具体可以用于将该客户端最近一次拉取消息的时间更新为接收到该消息拉取请求的时间,以及将该客户端最近一次拉取到的消息的消息序号更新为该待拉取消息的消息序号,根据更新后的时间和更新后的消息序号对该加密凭证进行更新,将更新后加密凭证携带在封装后待拉取消息中,由发送子单元发送给该客户端。
可选的,若在对加密凭证进行解析后,还得到校验信息,且校验信息指示存在拉取失败的“历史消息”,则此时,还可以获取拉取失败的历史消息,并发送给客户端;即如图3b所示,该消息处理装置还可以包括获取单元305,如下:
获取单元305,用于根据该校验信息确定存在历史消息拉取失败记录时,获取拉取失败的历史消息。
例如,以该校验信息为包括多个标记位的位图,且每个标记位用于标识一条历史消息,并记录所标记的历史消息的拉取情况为例,则此时,获取单元305,具体可以用于对该位图中的标记位进行检测,根据检测结果确定存在指示拉取消息丢失的标记位时,确定存在历史消息拉取失败记录,根据标记位的位置确定拉取失败的历史消息的消息序号,根据该拉取失败的历史消息的消息序号获取拉取失败的历史消息。
则此时,发送单元304,还可以用于将获取到的历史消息发送给该客户端。
比如,该发送单元304,具体可以将获取到的历史消息单独发送给客户端;或者,还可以用于将获取到的历史消息与获取到的待拉取消息一起进行封装后,发送给客户端,等等。
可选的,如图3b所示,该消息处理装置还可以包括第一更新单元306,如下:
第一更新单元306,可以用于在确定单元303确定不存在待拉取消息时,对该客户端中的加密凭证进行更新。
比如,第一更新单元306,具体可以用于在确定单元303确定不存在待拉取消息时,对加密凭证中的“时间(即客户端最近一次拉取消息的时间)”进行更新后,通过发送单元304将更新后加密凭证发送给客户端。
可选的,为了减少客户端与网络侧之间的信令流程,还可以将该消息拉取请求暂存一段时间,看后续是否有新的消息到达,若长时间未有可拉取的消息,才对该客户端中的加密凭证进行更新,即如图3c所示,该消息处理装置还可以包括暂存单元307,如下:
暂存单元307,可以用于在确定单元303确定不存在待拉取消息时,将该消息拉取请求暂存预设时长,在暂存期间,按照预设频率,触发确定单元执行根据该消息序号确定该房间号对应的直播间中是否存在待拉取的消息的操作,直至确定存在待拉取消息为止。
可选的,如图3c所示,该消息处理装置还可以包括第二更新单元308,如下:
第二更新单元308,可以用于在该消息拉取请求暂存的时间超过该预设时长时,删除暂存的消息拉取请求,并对该客户端中的加密凭证进行更新。
比如,该第二更新单元308,具体可以用于在该消息拉取请求暂存的时间超过该预设时长时,对加密凭证中的“时间(即客户端最近一次拉取消息的时间)”进行更新后,通过发送单元304将更新后加密凭证发送给客户端。
可选的,客户端还可以根据自身的需求进行消息如弹幕消息的发布,即如图3b和图3c所示,该消息处理装置还可以包括发布单元309,如下:
该接收单元301,还可以用于接收客户端发送的消息发布请求,该消息发布请求中携带加密凭证和消息内容.
该发布单元309,可以用于根据该加密凭证确定该客户端有效时,对该消息内容进行发布。
这样,其他客户端便可以基于自身的加密凭证从该消息处理装置中拉取到该发布的消息内容,其中,其他客户端拉取该消息内容的方式与该客户端拉取消息相同,在此不作赘述。
可选的,该加密凭证除了可以在客户端加入直播间时,由运维人员分配给各个客户端之外,也可以直接由该消息处理装置在客户端进入直播间时进行分配,即如图3b和图3c所示,该消息处理装置还可以包括生成单元310,如下:
接收单元301,还可以用于接收客户端发送的直播间加入请求,直播间加入请求携带目标直播间的房间号。
生成单元310,可以用于确定该客户端符合预设条件时,获取该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间,根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间生成加密凭证。
则此时,发送单元304,还可以用于将生成的加密凭证发送给该客户端。
可选的,若加密凭证中包括校验信息,则生成单元310在确定该客户端符合预设条件时,还可以获取校验信息,然后,再根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、该客户端加入该目标直播间的时间、以及校验信息生成加密凭证。
其中,该预设条件可以根据实际应用的需求进行设置,比如,若某个直播间只允许会员进入,则可以判别该客户端是否为会员,若为会员,则表明该客户端符合预设条件,否则,若不是会员,则表明该客户端不符合预设条件。又比如,若某个直播间只允许注册满一年的客户端进入,则此时,可以判别该客户端是否已注册满一年,若已注册满一年,则表明该客户端符合预设条件,否则,若未注册满一年,则表明该客户端不符合预设条件,以此类推,等等。
需说明的是,生成加密凭证的加密算法可以根据实际应用的需求进行设置,比如,对称性加密算法或线性散列算法,等等。
可选的,为了便于用户了解到当前直播间中的成员情况,也可以设置一成员列表,以在直播过程中,进行展示或供用户查询。为了保证该成员列表的可靠性,可以为该成员列表中的客户端设置相应的有效期,并定时进行更新,即该消息处理装置还可以包括列表处理单元,如下:
列表处理单元,可以用于获取直播间的成员列表,对该客户端在该成员列表中的有效期进行更新。
可选的,为了避免成员列表过大,可以将该成员列表设置为固定大小,并定时对该成员列表中的客户端的有效期进行检测,若客户端的有效期过期,则将该客户端从该成员列表中删除,即:
该列表处理单元,还可以用于按照预设周期,获取直播间的成员列表,确定该成员列表中存在有效期失效的客户端时,将失效的客户端从该成员列表中删除。
此外,当检测到有新客户端加入该直播间时,也可以将该新客户端添加至成员列表中,当然,如果成员列表已满,则也可以不进行添加,即:
该列表处理单元,还可以用于在接收到客户端发送的直播间加入请求时,将该客户端添加至成员列表中;或者,
该列表处理单元,还可以用于在接收到客户端发送的直播间加入请求,且确定成员列表中的客户端数量未超过设定值时,将该客户端添加至成员列表中。
其中,该设定值可以根据实际应用的需求进行设置,在此不作赘述。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
由上可知,本实施例的消息处理装置采用在消息拉取请求中携带加密凭证,然后,在接收单元301接收到拉取请求后,由解析单元302对该加密凭证进行解析,以得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等信息,然后,由确定单元303在根据该时间确定该客户端有效时,根据消息序号确定房间号对应的直播间中是否存在待拉取消息;若存在,则由发送单元304将待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新;由于该方案无需以成员列表为依据,也无需在服务器侧存储、查询和更新消息的各种属性,如客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等,而是直接将这些信息携带在消息中,因此,不会受制于成员列表的大小和变更,可以大大提高消息处理的及时性,避免消息延迟、以及减少直播间加入和退出的时延;而且,由于在确定是否拉取消息时,还可以对该客户端有效性进行检测,且该有效性检测所依据的“时间”是通过解析加密凭证得到的,具有及时性,所以,不会出现给已经退房的用户推送消息的情况,所以,相对于现有技术而言,该方案还可以节省资源;此外,由于无需在服务器侧维护这些消息的属性,因此,可以大大降低了服务器侧部署和操作的难度,不仅运维简单,而且易于实现平行扩容。
本发明实施例还提供一种服务器,如图4所示,其示出了本发明实施例所涉及的服务器的结构示意图,具体来讲:
该服务器可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的服务器结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
服务器还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,服务器中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
接收客户端发送的消息拉取请求,该消息拉取请求携带加密凭证,对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号,根据该时间确定该客户端有效时,根据该消息序号确定该房间号对应的直播间中是否存在待拉取消息,若存在待拉取消息,则将该待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新。
可选的,若加密凭证中还包括校验信息,则解析出来的信息还可以包括校验信息。
可选的,该加密凭证可以在客户端加入直播间时,由运维人员分配给各个客户端,或者,也可以直接由该消息处理装置在客户端进入直播间时进行分配,即处理器401还可以运行存储在存储器402中的应用程序,从而实现如下功能:
接收客户端发送的直播间加入请求,直播间加入请求携带目标直播间的房间号,确定该客户端符合预设条件时,获取该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间,根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间生成加密凭证,将生成的加密凭证发送给该客户端。
可选的,若加密凭证中包括校验信息,则在确定该客户端符合预设条件时,还可以获取校验信息,然后,再根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、该客户端加入该目标直播间的时间、以及校验信息生成加密凭证。
其中,该预设条件可以根据实际应用的需求进行设置,在此不作赘述。
可选的,在确定不存在待拉取消息时,还可以对该客户端中的加密凭证进行更新。或者,也可以该消息拉取请求暂存一段时间,看后续是否有新的消息到达,若长时间未有可拉取的消息,才对该客户端中的加密凭证进行更新
可选的,客户端还可以根据自身的需求进行消息的发布,即处理器401还可以运行存储在存储器402中的应用程序,从而实现如下功能:
接收客户端发送的消息发布请求,该消息发布请求中携带加密凭证和消息内容,根据该加密凭证确定该客户端有效时,对该消息内容进行发布。
以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
由上可知,本实施例的服务器采用在消息拉取请求中携带加密凭证,然后,在接收到拉取请求后,对该加密凭证进行解析,以得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等信息,然后,在根据该时间确定该客户端有效时,根据消息序号确定房间号对应的直播间中是否存在待拉取消息;若存在,则将待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新;由于该方案无需以成员列表为依据,也无需在服务器侧存储、查询和更新消息的各种属性,如客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号等,而是直接将这些信息携带在消息中,因此,不会受制于成员列表的大小和变更,可以大大提高消息处理的及时性,避免消息延迟、以及减少直播间加入和退出的时延;而且,由于在确定是否拉取消息时,还可以对该客户端有效性进行检测,且该有效性检测所依据的“时间”是通过解析加密凭证得到的,具有及时性,所以,不会出现给已经退房的用户推送消息的情况,所以,相对于现有技术而言,该方案还可以节省资源;此外,由于无需在服务器侧维护这些消息的属性,因此,可以大大降低了服务器侧部署和操作的难度,不仅运维简单,而且易于实现平行扩容。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种直播间中的消息处理方法中的步骤。例如,该指令可以执行如下步骤:
接收客户端发送的消息拉取请求,该消息拉取请求携带加密凭证,对该加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号,根据该时间确定该客户端有效时,根据该消息序号确定该房间号对应的直播间中是否存在待拉取消息,若存在待拉取消息,则将该待拉取消息发送给该客户端,并对该客户端中的加密凭证进行更新。
可选的,若加密凭证中还包括校验信息,则解析出来的信息还可以包括校验信息。
可选的,该加密凭证可以在客户端加入直播间时,由运维人员分配给各个客户端,或者,也可以直接由该消息处理装置在客户端进入直播间时进行分配,即该指令还可以执行如下步骤:
接收客户端发送的直播间加入请求,直播间加入请求携带目标直播间的房间号,确定该客户端符合预设条件时,获取该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间,根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、以及该客户端加入该目标直播间的时间生成加密凭证,将生成的加密凭证发送给该客户端。
可选的,若加密凭证中包括校验信息,则在确定该客户端符合预设条件时,还可以获取校验信息,然后,再根据该目标直播间的房间号、该目标直播间当前最新消息的消息序号、该客户端加入该目标直播间的时间、以及校验信息生成加密凭证。其中,该预设条件可以根据实际应用的需求进行设置,在此不作赘述。
可选的,在确定不存在待拉取消息时,还可以对该客户端中的加密凭证进行更新。或者,也可以该消息拉取请求暂存一段时间,看后续是否有新的消息到达,若长时间未有可拉取的消息,才对该客户端中的加密凭证进行更新
可选的,客户端还可以根据自身的需求进行消息的发布,即该指令还可以执行如下步骤:
接收客户端发送的消息发布请求,该消息发布请求中携带加密凭证和消息内容,根据该加密凭证确定该客户端有效时,对该消息内容进行发布。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种直播间中的消息处理方法中的步骤,因此,可以实现本发明实施例所提供的任一种直播间中的消息处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种直播间中的消息处理方法、装置和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (14)

1.一种直播间中的消息处理方法,其特征在于,包括:
接收客户端发送的消息拉取请求,所述消息拉取请求携带加密凭证;
对所述加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号;
根据所述时间确定所述客户端有效时,根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取消息;
若存在待拉取消息,则将所述待拉取消息发送给所述客户端,并对所述客户端中的加密凭证进行更新;
对所述加密凭证进行解析,得到校验信息,所校验信息用于记录所述最近一次拉取到的消息的历史消息的拉取情况;
根据所述校验信息确定存在历史消息拉取失败记录时,获取拉取失败的历史消息;
将获取到的历史消息发送给所述客户端。
2.根据权利要求1所述的直播间中的消息处理方法,其特征在于,所述根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取消息的步骤,包括:
获取所述房间号对应的直播间的消息列表;
根据所述消息序号查询消息列表;
若消息列表中存在大于所述消息序号的其他消息序号,则确定所述直播间中存在待拉取消息;
若消息列表中不存在大于所述消息序号的其他消息序号,则确定所述直播间中不存在待拉取消息。
3.根据权利要求2所述的直播间中的消息处理方法,其特征在于,所述将所述待拉取消息发送给所述客户端的步骤,包括:
从所述消息列表中获取大于所述消息序号的其他消息序号;
获取所述其他消息序号对应的消息,得到至少一个待拉取消息;
将所述至少一个待拉取消息进行封装,并将封装后的待拉取消息发送给所述客户端。
4.根据权利要求3所述的直播间中的消息处理方法,其特征在于,所述对所述客户端中的加密凭证进行更新,包括:
将所述客户端最近一次拉取消息的时间更新为接收到所述消息拉取请求的时间,以及将所述客户端最近一次拉取到的消息的消息序号更新为所述待拉取消息的消息序号;
根据更新后的时间和更新后的消息序号对所述加密凭证进行更新;
将更新后加密凭证携带在封装后待拉取消息中,发送给所述客户端。
5.根据权利要求1所述的直播间中的消息处理方法,其特征在于,所述根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取消息之后,还包括:
若不存在待拉取消息,则对所述客户端中的加密凭证进行更新。
6.根据权利要求1所述的直播间中的消息处理方法,其特征在于,所述根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取消息之后,还包括:
若不存在待拉取消息,则将所述消息拉取请求暂存预设时长;
在暂存期间,按照预设频率,返回执行根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取的消息的步骤,直至确定存在待拉取消息为止。
7.根据权利要求6所述的直播间中的消息处理方法,其特征在于,所述将所述消息拉取请求暂存预设时长之后,还包括:
在所述消息拉取请求暂存的时间超过所述预设时长时,删除暂存的消息拉取请求,并对所述客户端中的加密凭证进行更新。
8.根据权利要求1所述的直播间中的消息处理方法,其特征在于,所述校验信息为包括多个标记位的位图,每个标记位用于标识一条历史消息,并记录所标记的历史消息的拉取情况,所述根据所述校验信息确定存在历史消息拉取失败记录时,获取拉取失败的历史消息,包括:
对所述位图中的标记位进行检测;
根据检测结果确定存在指示拉取消息丢失的标记位时,确定存在历史消息拉取失败记录;
根据标记位的位置确定拉取失败的历史消息的消息序号;
根据所述拉取失败的历史消息的消息序号获取拉取失败的历史消息。
9.根据权利要求1至7任一项所述的直播间中的消息处理方法,其特征在于,还包括:
接收客户端发送的消息发布请求,所述消息发布请求中携带加密凭证和消息内容;
根据所述加密凭证确定所述客户端有效时,对所述消息内容进行发布。
10.根据权利要求1至7任一项所述的直播间中的消息处理方法,其特征在于,还包括:
接收客户端发送的直播间加入请求,直播间加入请求携带目标直播间的房间号;
确定所述客户端符合预设条件时,获取所述目标直播间当前最新消息的消息序号、以及所述客户端加入所述目标直播间的时间;
根据所述目标直播间的房间号、所述目标直播间当前最新消息的消息序号、以及所述客户端加入所述目标直播间的时间生成加密凭证;
将生成的加密凭证发送给所述客户端。
11.根据权利要求1至7任一项所述的直播间中的消息处理方法,其特征在于,所述接收客户端发送的消息拉取请求之后,还包括:
获取直播间的成员列表;
对所述客户端在所述成员列表中的有效期进行更新。
12.根据权利要求1至7任一项所述的直播间中的消息处理方法,其特征在于,还包括:
按照预设周期,获取直播间的成员列表;
确定所述成员列表中存在有效期失效的客户端时,将失效的客户端从所述成员列表中删除。
13.一种直播间中的消息处理装置,其特征在于,包括:
接收单元,用于接收客户端发送的消息拉取请求,所述消息拉取请求携带加密凭证;
解析单元,用于对所述加密凭证进行解析,得到直播间的房间号、客户端最近一次拉取消息的时间、以及客户端最近一次拉取到的消息的消息序号;还可以用于对所述加密凭证进行解析,得到校验信息,所校验信息用于记录所述最近一次拉取到的消息的历史消息的拉取情况;
确定单元,用于根据所述时间确定所述客户端有效时,根据所述消息序号确定所述房间号对应的直播间中是否存在待拉取消息;
发送单元,用于在确定单元确定存在待拉取消息时,将所述待拉取消息发送给所述客户端,并对所述客户端中的加密凭证进行更新;还可以用于将获取到的历史消息发送给所述客户端;以及
获取单元,用于根据所述校验信息确定存在历史消息拉取失败记录时,获取拉取失败的历史消息。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至12任一项所述的直播间中的消息处理方法中的步骤。
CN201811573335.7A 2018-12-21 2018-12-21 一种直播间中的消息处理方法、装置和存储介质 Active CN111355986B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811573335.7A CN111355986B (zh) 2018-12-21 2018-12-21 一种直播间中的消息处理方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811573335.7A CN111355986B (zh) 2018-12-21 2018-12-21 一种直播间中的消息处理方法、装置和存储介质

Publications (2)

Publication Number Publication Date
CN111355986A CN111355986A (zh) 2020-06-30
CN111355986B true CN111355986B (zh) 2022-01-04

Family

ID=71193860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811573335.7A Active CN111355986B (zh) 2018-12-21 2018-12-21 一种直播间中的消息处理方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN111355986B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111884843B (zh) * 2020-07-20 2022-07-19 北京字节跳动网络技术有限公司 一种消息处理方法、装置、电子设备及存储介质
CN112040328B (zh) * 2020-08-04 2023-03-10 北京字节跳动网络技术有限公司 数据交互方法、装置和电子设备
CN112584191B (zh) * 2020-12-08 2023-01-13 百果园技术(新加坡)有限公司 一种公屏消息的读取方法、装置、服务器和存储介质
CN112689202B (zh) 2021-03-22 2021-06-15 北京达佳互联信息技术有限公司 直播间消息处理方法、装置、服务器及存储介质
CN113422969B (zh) * 2021-05-25 2023-08-08 北京达佳互联信息技术有限公司 信息拉取方法、装置及服务器

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8918085B2 (en) * 2008-08-05 2014-12-23 Mediafriends, Inc. Social messaging hub
CN101729571A (zh) * 2009-12-28 2010-06-09 广州游家信息技术有限公司 网络在线用户人数统计方法、服务器和系统
CN103326929B (zh) * 2013-06-24 2017-02-08 小米科技有限责任公司 一种消息传输方法和装置
CN105933213B (zh) * 2016-06-24 2021-01-15 腾讯科技(深圳)有限公司 一种聊天消息的处理方法、相关设备和系统
CN108055356B (zh) * 2018-01-08 2021-03-16 武汉斗鱼网络科技有限公司 一种信息处理方法、服务器、客户端及可读存储介质

Also Published As

Publication number Publication date
CN111355986A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
CN111355986B (zh) 一种直播间中的消息处理方法、装置和存储介质
CN108306877B (zh) 基于node js的用户身份信息的验证方法、装置和存储介质
KR102029277B1 (ko) 패킷 기반 데이터 통신의 디바이스 식별자 의존적 오퍼레이션 프로세싱
CN106453066B (zh) 群组会话处理方法、终端、服务器及系统
US20200067903A1 (en) Integration of Publish-Subscribe Messaging with Authentication Tokens
US9544288B2 (en) Messaging gateway
CN112261172B (zh) 服务寻址访问方法、装置、系统、设备及介质
CN111555893B (zh) 消息数据传输方法、装置、计算机设备和存储介质
CN108390881A (zh) 一种分布式高并发实时消息推送方法及系统
CN105991412A (zh) 消息推送方法及装置
CN108696364B (zh) 请求消息处理方法、聊天室消息服务器及聊天室系统
CN101404575B (zh) 一种更新签名算法的方法和系统
CN108289074B (zh) 用户账号登录方法及装置
CN110913011B (zh) 会话保持方法、会话保持装置、可读存储介质及电子设备
CN112052227A (zh) 数据变更日志的处理方法、装置和电子设备
CN111698126A (zh) 信息监控方法、系统及计算机可读存储介质
CN106027555B (zh) 一种采用sdn技术改善内容分发网络安全性的方法及系统
EP4096328A1 (en) Network function registration method and apparatus, network function discovery method and apparatus, and device and medium
CN111866993B (zh) 无线局域网连接管理方法、装置、软件程序及存储介质
WO2021073405A1 (zh) 数据分发方法、电子设备及存储介质
CN113254050A (zh) 一种微前端系统
US20180081746A1 (en) Application message processing system, method, and application device
CN102045323A (zh) 统一资源标识符索引的信息的处理方法及装置
KR20190002340A (ko) M2m 시스템에서 요청 메시지를 처리하는 방법 및 그 장치
CN114338682A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40024871

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant