CN115695358A - 消息推送方法、装置、存储介质及电子设备 - Google Patents

消息推送方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN115695358A
CN115695358A CN202211358506.0A CN202211358506A CN115695358A CN 115695358 A CN115695358 A CN 115695358A CN 202211358506 A CN202211358506 A CN 202211358506A CN 115695358 A CN115695358 A CN 115695358A
Authority
CN
China
Prior art keywords
client
state
user
server
online
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.)
Pending
Application number
CN202211358506.0A
Other languages
English (en)
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.)
Douyin Vision Co Ltd
Original Assignee
Douyin Vision 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 Douyin Vision Co Ltd filed Critical Douyin Vision Co Ltd
Priority to CN202211358506.0A priority Critical patent/CN115695358A/zh
Publication of CN115695358A publication Critical patent/CN115695358A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本公开涉及一种消息推送方法、装置、存储介质及电子设备,以更及时准确地感知用户在线状态,提高消息推送的及时性和准确性。其中,该方法包括:确定客户端与服务端的长连接状态;若所述客户端与所述服务端的长连接状态为在线状态,则从缓存读取所述客户端的运行状态,所述缓存用于保存目标设备响应于预设操作上报的所述客户端的运行状态,所述目标设备中安装有所述客户端,所述运行状态包括前台状态或后台状态;根据所述客户端的运行状态,确定用户在线状态;根据所述用户在线状态,推送与所述客户端相关的消息。

Description

消息推送方法、装置、存储介质及电子设备
技术领域
本公开涉及计算机技术领域,具体地,涉及一种消息推送方法、装置、存储介质及电子设备。
背景技术
在社交型应用程序中,通常需要判断用户是否在线,然后根据用户是否在线进行消息推送。相关技术主要是客户端通过短连接主动上报运行状态来确定用户是否在线,上报的时机是冷启动和每隔X(X为正整数)分钟定时上报一次。但是,短连接定时上报会对服务端造成较大压力。并且,每隔X分钟上报一次,会导致用户在线状态判断不准确,比如上报时用户在线,然后用户马上下线,则需要等待X分钟后才能感知到该用户下线了,从而影响与客户端相关的消息推送。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
第一方面,本公开提供一种消息推送方法,所述方法包括:
确定客户端与服务端的长连接状态;
若所述客户端与所述服务端的长连接状态为在线状态,则从缓存读取所述客户端的运行状态,所述缓存用于保存目标设备响应于预设操作上报的所述客户端的运行状态,所述目标设备中安装有所述客户端,所述运行状态包括前台状态或后台状态;
根据所述客户端的运行状态,确定用户在线状态;
根据所述用户在线状态,推送与所述客户端相关的消息。
第二方面,本公开提供一种消息推送装置,所述装置包括:
第一确定模块,用于确定客户端与服务器的长连接状态;
接收模块,用于当所述客户端与所述服务端的长连接状态为在线状态时,从缓存读取所述客户端的运行状态,所述缓存用于保存目标设备响应于预设操作上报的所述客户端的运行状态,所述目标设备中安装有所述客户端,所述运行状态包括前台状态或后台状态;
第二确定模块,用于根据所述客户端的运行状态,确定用户在线状态;
推送模块,用于根据所述用户在线状态,推送与所述客户端相关的消息。
第三方面,本公开提供一种非临时性计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现第一方面中所述方法的步骤。
第四方面,本公开提供一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现第一方面中所述方法的步骤。
通过上述技术方案,在消息推送时,可以先确定客户端与服务端的长连接状态,然后当客户端与服务端的长连接状态为在线状态时,进一步结合客户端的运行状态,确定用户在线状态。其中,由于是在确定长连接在线的情况下再进一步确定运行状态,相较于相关技术中仅根据运行状态确定用户在线状态的方式,可以更及时准确地感知用户在线状态,提高消息推送的及时性和准确性。另外,客户端与服务端为长连接方式,且缓存中保存的运行状态是目标设备响应于预设操作时上报的,相较于短连接定时上报的方式,可以减轻服务器的压力,减小消息推送过程中的通信开销,从而提高消息推送的效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
图1是根据本公开一示例性实施例示出的一种消息推送方法的流程图;
图2是根据本公开一示例性实施例示出的一种消息推送方法的过程示意图;
图3是根据本公开另一示例性实施例示出的一种消息推送方法的过程示意图;
图4是根据本公开另一示例性实施例示出的一种消息推送方法中确定用户在线状态的流程图;
图5是根据本公开一示例性实施例示出的一种消息推送装置的框图;
图6是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。另外需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
同时,可以理解的是,本技术方案所涉及的数据(包括但不限于数据本身、数据的获取或使用)应当遵循相应法律法规及相关规定的要求。
正如背景技术所言,在社交型应用程序中,通常需要判断用户是否在线,然后根据用户是否在线进行消息推送。相关技术主要是客户端通过短连接主动上报运行状态来确定用户是否在线,上报时机是冷启动和每隔X(X为正整数)分钟定时上报一次。但是,短连接定时上报会对服务端造成较大压力。并且,每隔X分钟上报一次,会导致用户在线状态判断不准确,比如上报时用户在线,然后用户马上下线,则需要等待X分钟后才能感知到该用户下线了,从而影响客户端相关的消息推送。
有鉴于此,本公开提供一种消息推送方法、装置、存储介质及电子设备,以更及时准确地感知用户在线状态,提高消息推送的及时性和准确性。
图1是根据本公开一示例性实施例示出的一种消息推送方法的流程图。参照图1,该消息推送方法可以包括:
步骤101,确定客户端与服务端的长连接状态。
步骤102,若客户端与服务端的长连接状态为在线状态,则从缓存读取客户端的运行状态。其中,该缓存用于保存目标设备响应于预设操作上报的客户端的运行状态,该目标设备中安装有客户端,该运行状态包括前台状态或后台状态。
步骤103,根据客户端的运行状态,确定用户在线状态。
步骤104,根据用户在线状态,推送与客户端相关的消息。
通过上述技术方案,在消息推送时,可以当客户端与服务端的长连接状态为在线状态时,进一步从缓存读取该客户端的运行状态,然后根据该运行状态确定用户在线状态。其中,由于是在确定长连接在线的情况下再进一步确定运行状态,相较于相关技术中仅根据定时上报的运行状态确定用户在线状态的方式,可以更及时准确地感知用户在线状态,从而提高消息推送的及时性和准确性。另外,客户端与服务端为长连接方式,且缓存中保存的运行状态是目标设备响应于预设操作时上报的,相较于短连接定时上报的方式,可以减轻服务器的压力,减小消息推送过程中的通信开销,从而提高消息推送的效率。
为了使得本领域技术人员更加理解本公开提供的消息推送方法,下面对上述各步骤进行详细举例说明。
示例地,客户端为与服务端相对应的、为用户提供本地服务的应用程序,即,客户端为运行在手机、平板等终端设备上的应用程序,比如可以是社交游戏类应用程序、短视频应用程序等不同类型的应用程序,本公开实施例对此不作限定。服务端为部署有客户端相关业务服务的服务器,本公开实施例提供的消息推送方法可以应用该服务端。
示例地,客户端与服务端的长连接状态可以为在线状态或离线状态。其中在线状态表示客户端与服务端建立了长连接,离线状态表示客户端与服务端断开了长连接。若客户端与服务端的长连接状态为在线状态,则说明该客户端与服务端建立了长连接,因此进一步从缓存读取该客户端的运行状态来确定用户在线状态,从而可以更及时准确地确定用户在线状态。
在可能的方式中,确定客户端与服务端的长连接状态,可以是:先从长连接服务器查询客户端与服务端的长连接通道信息。其中,长连接服务器用于建立客户端与服务端之间的长连接通道,长连接通道信息用于表征客户端与服务端之间的长连接通道是否断开。然后,根据长连接通道信息,确定客户端与服务端的长连接状态。
例如,参照图2,客户端和服务端通过长连接服务器建立的长连接通道进行业务通信,且长连接服务器对外提供QueryOnline(在线查询)接口,该接口被用于服务端查询自身与客户端的长连接通道信息。在触发消息推送时,服务端可以通过QueryOnline接口从长连接服务器获取长连接通道信息。当客户端与长连接服务器长连接时,该长连接通道信息用于表征客户端与服务端之间的长连接通道未断开,当客户端与长连接服务器没有长连接时,该长连接通道信息用于表征客户端与服务端之间的长连接通道断开。由此,根据长连接通道信息,可以确定客户端与服务端的长连接状态。比如,当长连接通道信息表征的是客户端与服务端之间的长连接通道未断开时,可以确定客户端与服务端的长连接状态为在线。当长连接通道信息表征的是客户端与服务端之间的长连接通道断开时,可以确定客户端与服务端的长连接状态为离线。在实际应用中,可以通过将长连接状态设置为1来表示在线,通过将长连接状态设置为0来表示离线,本公开实施例对此不作限定。
若客户端与服务端的长连接状态为在线状态,则可以进一步从缓存中读取该客户端的运行状态。示例地,客户端的运行状态包括前台状态和后台状态。其中,前台状态可以是在终端设备显示客户端界面的状态,后台状态可以是终端设备上没有显示客户端界面、且客户端进程在终端设备的处理器中运行的状态。本公开实施例中,若用户的多个设备中安装有客户端,则该多个设备可以响应于预设操作向服务端上报客户端的运行状态,当服务端接收到各设备上报的客户端的运行状态后,可以将各设备上报的客户端的运行状态保存在缓存中。
应当理解的是,用户的多个设备可以是手机、平板等不同类型的终端设备,用户在多个设备中安装客户端,该多个设备中客户端的运行状态可能有所不同。比如用户在第一设备中登录客户端,并将第二设备中运行的客户端切换到后台运行,即第一设备中客户端的运行状态为前台状态且用户在线,第二设备中客户端的运行状态为后台状态且用户离线。因此为了保证用户在线状态的准确性,每个设备均可以响应于预设操作上报客户端运行状态到服务端。
在可能的方式中,预设操作可以包括以下至少一种操作:客户端从前台状态切换为后台状态、客户端从后台状态切换为前台状态、客户端与服务器建立长连接。例如,设置客户端的后台状态标识,并设定当该后台状态标识为1时表示客户端的运行状态为后台状态,且当该后台状态标识为0时表示客户端的运行状态为前台状态。在此种情况下,当检测到客户端从前台状态切换为后台状态时,运行该客户端的设备可以上报为1的后台状态标识,用于表征客户端的当前运行状态为后台状态。当检测到客户端从前台状态切换为后台状态时,运行该客户端的设备可以上报为0的后台状态标识,用于表征客户端的当前运行状态为前台状态。当客户端与服务端建立长连接时,可以先确定客户端的运行状态,若客户端的运行状态为前台状态,则运行该客户端的设备可以上报为0的后台状态标识,若客户端的运行状态为后台状态,则运行该客户端的设备可以上报为1的后台状态标识。
由此,可以在客户端的运行状态切换时上报客户端的运行状态,相较于短连接定时上报的方式,一方面可以减小通信开销和服务端的压力,另一方面可以及时感知客户端的运行状态变化,从而结合客户端的运行状态更准确地确定用户在线状态。
示例地,服务端接收到设备上报的客户端的运行状态后,可以将客户端的运行状态保存到缓存中。该缓存例如可以是Redis(Remote Dictionary Server,远程字典服务)数据库或Abase数据库,或者可以是服务端自身的缓存,本公开实施例对此不作限定。比如,参照图2,安装有客户端的设备响应于预设操作将运行状态通过长连接服务器上报给服务端。具体地,先通过Send函数将通过后台状态标识is_background表示的运行状态发送给长连接服务器,然后长连接服务器通过SendMessage函数将该运行状态发送给服务端。之后,该服务端通过Redis保存该运行状态。
由此,当一个或多个设备中安装的客户端与服务端的长连接状态为在线状态时,可以进一步从缓存读取该客户端的运行状态,从而根据该运行状态,确定用户在线状态。其中,用户在线状态可以包括用于表征用户在线的状态和用于表征用户离线的状态。
在可能的方式中,若客户端仅被安装在用户的一个设备中,则当从缓存中读取的运行状态为前台状态时,可以确定用户在线状态为用于表征用户在线的状态。另一方面,当从缓存中读取的运行状态为后台状态时,可以确定用户在线状态为用于表征用户在线的状态。
其中,由于在读取客户端的运行状态之前,已经确定客户端与服务端的长连接状态为在线状态,且客户端仅运行在一个设备中,因此若该客户端的运行状态为前台状态,则可以确定用户在线,若运行状态为后台状态,则可以确定用户离线。也即是说,若客户端仅运行在一个设备中,则可以当客户端与服务端的长连接状态为在线状态,且客户端运行状态为前台状态时,确定用户在线。另一种情况,当客户端与服务端的长连接状态为离线状态,且客户端的运行状态为后台状态时,确定用户离线。
在其他可能的方式中,客户端包括与同一账户关联的多个客户端,每个客户端对应一个目标设备。在此种情况下,若存在至少一个目标设备中客户端与服务端的长连接状态为在线状态,则可以从缓存读取该至少一个目标设备中客户端的运行状态。当该至少一个目标设备中客户端的运行状态存在前台状态时,确定用户在线状态为用于表征用户在线的状态。当该至少一个目标设备中客户端的运行状态均为后台状态时,确定用户在线状态为用于表征用户离线的状态。
应当理解的是,若客户端被安装在用户的多个设备中,则与服务端的长连接状态为在线状态的客户端可能为N(N为大于等于1的正整数)个。若该N个客户端的运行状态中存在前台状态,则可以确定用户在某个设备或某几个设备中在线,从而确定用户在线状态为用于表征用户在线的状态。若该N个客户端的运行状态均为后台状态,则可以确定用户在所有设备中均离线,从而可以确定用户在线状态为用于表征用户离线的状态。
在其他可能的方式中,若用户的所有目标设备中客户端与服务端的长连接状态均为离线状态,则可以确定客户端的用户在线状态为用于表征用户离线的状态。其中,当客户端与服务端的长连接离线时,说明客户端与服务端之间的长连接通道断开,无论客户端的运行状态为前台状态还是后台状态,均可以确定该客户端的用户离线,从而无需从缓存读取客户端的运行状态,可以直接根据离线的长连接状态确定用户离线。
在一些实施例中,客户端与服务端的长连接状态可以从长连接服务器获取。但是,如果频繁推送消息,则会造成长连接服务器的压力,因此本公开还提供先从缓存中读取客户端运行状态,再结合读取情况确定用户在线状态的方式。
在可能的方式中,客户端包括与同一账户关联的多个客户端,每个客户端对应一个目标设备,可以先从缓存读取所有目标设备中客户端的运行状态,若从缓存读取到至少一个目标设备中客户端的运行状态,且至少一个目标设备中客户端的运行状态存在前台状态,则可以确定客户端与服务端的长连接状态。
应当理解的是,缓存中存储的是目标设备响应于预设操作主动上报的运行状态,如果该目标设备响应于预设操作主动上报运行状态后,该目标设备中的客户端进程被杀死,则客户端不会处于前台状态和后台状态,并且此种情况也不属于客户端与服务端建立长连接的情况,因此客户端不会主动上报运行状态。基于此,若客户端进程被杀死之前客户端处于前台状态,即客户端的用户在线,则在客户端进程被杀死之后,该客户端的用户应当变为离线,但是,由于客户端没有主动上报运行状态,缓存中的运行状态仍然为前台状态,则可能将用户在线状态确定为在线,不符合实际的用户在线情况。因此,当从缓存中读取到客户端的运行状态且运行状态存在前台状态时,可以进一步确定客户端与服务端的长连接状态,从而结合长连接状态确定用户在线状态,提高用户在线状态的准确性,进而提高消息推送的准确性。
在其他可能的方式中,若从缓存读取到所有目标设备中客户端的运行状态,且所有目标设备中客户端的运行状态均为后台状态,则可以确定客户端的用户在线状态为用于表征用户离线的状态。若从缓存未读取到客户端的运行状态,则可以确定客户端的用户在线状态为用于表征用户离线的状态。
应当理解的是,若从缓存中读取到所有目标设备中客户端的运行状态均为后台状态,说明客户端在用户的所有目标设备中均是后台运行,从而可以确定用户处于离线。另一方面,若从缓存未读取到客户端的运行状态,说明客户端可能为第一次运行,客户端和服务端的长连接还未建立,从而可以确定用户处于离线。比如,安装客户端后用户第一次登录的场景下,当用户执行登录操作时无法查询到客户端的运行状态,从而可以确定用户离线。当用户登录成功后,相当于客户端与服务端建立长连接,客户端主动上报运行状态,服务端将客户端上报的运行状态缓存。之后可以先从缓存读取客户端的运行状态,然后按照上述方式根据读取情况确定该客户端的用户在线状态。
由此,可以先从缓存中读取客户端的运行状态,当客户端运行状态为前台状态时,进一步确定长连接状态以及从缓存中二次读取客户端的运行状态。当客户端运行状态均为后台状态,或者未读取到客户端运行状态时,则可以直接确定用户在线状态,而无需确定客户端与服务端的长连接状态,从而可以低开销地实时感知用户在线状态,提高消息推送的及时性和效率。
在通过上述任一方式确定用户在线状态后,可以根据该用户在线状态,推送与客户端相关的消息。应当理解的是,客户端运行在用户的设备,相应地,推送与客户端相关的消息可以是向该用户的设备推送与该客户端相关的消息,或者也可以向其他用户的设备推送与该客户端相关的消息,从而告知其他用户该用户的在线情况,本公开实施例对此不作限定。
在可能的方式中,若用户在线状态为用于表征用户在线的状态,则可以推送与客户端相关的站内消息,若用户在线状态为用于表征用户离线的状态,则可以推送与客户端相关的站外消息。
示例地,站内消息是推送后在客户端界面上显示的消息,比如客户端为短视频客户端,当该客户端播放短视频时,可以确定客户端的用户在线,从而可以在该短视频的播放界面上推送显示站内消息。站外消息可以是推送后在设备未显示客户端界面时显示的消息,比如设备处于锁屏状态时推送的客户端提醒消息。本公开实施例对于站内消息和站外消息的具体内容和形式不作限定。
下面通过另一示例性实施例对本公开提供的消息推送方法进行说明。
参照图3,当触发消息推送时,先确定用户在线状态。若根据该用户在线状态确定用户在线,则推送站内消息,若根据该用户在线状态确定用户离线,则推送站外消息。
其中,参照图4,可以通过如下步骤确定用户在线状态:
步骤401,从缓存读取用户的所有设备中客户端的运行状态;
步骤402,确定是否从缓存中读取到客户端的运行状态,若是,则进入步骤403,否则进入步骤404;
步骤403,确定运行状态是否均为后台状态,若是,则进入步骤404,否则进入步骤405和406;
步骤404,确定用户在线状态为用于表征用户离线的状态;
步骤405,确定客户端与服务端的长连接状态;
步骤406,确定长连接状态是否均离线,若是,则进入步骤404,否则进入步骤407;
步骤407,从缓存读取客户端的运行状态;
步骤408,确定运行状态是否均为后台状态,若是,则进入步骤404,否则进入步骤409;
步骤409,确定用户在线状态为用于表征用户在线的状态。
上述各步骤的具体实施方式已在上文进行详细举例说明,这里不再赘述。另外应当理解的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受上文所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,上文所描述的实施例属于优选实施例,所涉及的步骤并不一定是本公开所必须的。
另外应当理解的是,本公开实施例中确定用户在线状态的过程可以封装为一个服务,并提供接口供外部调用。比如,提供MGetOnlineInfo接口供服务端在触发消息推送时调用,本公开实施例对此不作限定。
通过上述方式,在消息推送时,可以当客户端与服务端的长连接状态为在线状态时,进一步从缓存读取该客户端的运行状态,然后根据该运行状态确定用户在线状态。其中,由于是在确定长连接在线的情况下再进一步确定运行状态,相较于相关技术中仅根据定时上报的运行状态确定用户在线状态的方式,可以更及时准确地感知用户在线状态,从而提高消息推送的及时性和准确性。另外,客户端与服务端为长连接方式,且缓存中保存的运行状态是用户所有设备响应于预设操作时上报的,相较于短连接定时上报的方式,可以减轻服务器的压力,减小消息推送过程中的通信开销,从而提高消息推送的效率。
并且,可以先从缓存中读取客户端的运行状态,当客户端运行状态为前台状态时,进一步确定长连接状态以及从缓存中二次读取客户端的运行状态。当客户端运行状态均为后台状态,或者未读取到客户端运行状态时,则可以直接确定用户在线状态,而无需确定客户端与服务端的长连接状态,从而可以低开销地实时感知用户在线状态,提高消息推送的及时性和效率。
基于同一构思,本公开还提供一种消息推送装置,该装置可以通过软件、硬件或者两者结合的方式成为电子设备的部分或全部。参照图5,该消息推送装置500包括:
第一确定模块501,用于确定客户端与服务器的长连接状态;
读取模块502,用于当所述客户端与所述服务端的长连接状态为在线状态时,从缓存读取所述客户端的运行状态,所述缓存用于保存目标设备响应于预设操作上报的所述客户端的运行状态,所述目标设备中安装有所述客户端,所述运行状态包括前台状态或后台状态;
第二确定模块503,用于根据所述客户端的运行状态,确定用户在线状态;
推送模块504,用于根据所述用户在线状态,推送与所述客户端相关的消息。
可选地,所述客户端包括与同一账户关联的多个客户端,每个客户端对应一个目标设备,所述读取模块502用于当存在至少一个所述目标设备中所述客户端与所述服务端的长连接状态为在线状态时,从缓存读取至少一个所述目标设备中所述客户端的运行状态;
所述第二确定模块503用于:
当至少一个所述目标设备中所述客户端的运行状态存在所述前台状态时,确定所述用户在线状态为用于表征用户在线的状态;
当至少一个所述目标设备中所述客户端的运行状态均为所述后台状态时,确定所述用户在线状态为用于表征用户离线的状态。
可选地,所述装置500还包括:
第三确定模块,用于当所述目标设备中所述客户端与所述服务端的长连接状态均为离线状态时,确定所述用户在线状态为用于表征用户离线的状态。
可选地,所述客户端包括与同一账户关联的多个客户端,每个客户端对应一个目标设备,所述第一确定模块501用于:
从所述缓存读取所有目标设备中所述客户端的运行状态;
当从所述缓存读取到至少一个所述目标设备中所述客户端的运行状态,且至少一个目标设备中所述客户端的运行状态存在前台状态时,确定所述客户端与所述服务端的长连接状态。
可选地,所述装置500还包括:
第四确定模块,用于当从所述缓存读取到所有目标设备中所述客户端的运行状态,且所有目标设备中所述客户端的运行状态均为后台状态时,确定所述用户在线状态为用于表征用户离线的状态;
第五确定模块,用于当从所述缓存未读取到所述客户端的运行状态时,确定所述用户在线状态为用于表征用户离线的状态。
可选地,所述预设操作包括以下至少一种操作:所述客户端从所述前台状态切换为所述后台状态、所述客户端从所述后台状态切换为所述前台状态、所述客户端与所述服务端建立长连接。
可选地,所述第一确定模块501用于:
从长连接服务器查询所述客户端与所述服务端的长连接通道信息,所述长连接服务器用于建立所述客户端与所述服务端之间的长连接通道,所述长连接通道信息用于表征所述客户端与所述服务端之间的长连接通道是否断开;
根据所述长连接通道信息,确定所述客户端与所述服务端的长连接状态。
可选地,推送模块504用于:
当所述用户在线状态为用于表征用户在线的状态时,推送与所述客户端相关的站内消息;
当所述用户在线状态为用于表征用户在线的状态时,推送与所述客户端相关的站外消息。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
基于同一构思,本公开还提供一种非临时性计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现上述任一消息推送方法的步骤。
基于同一构思,本公开还提供一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现上述任一消息推送方法的步骤。
下面参考图6,其示出了适于用来实现本公开实施例的电子设备600的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600可以包括处理装置(例如中央处理器、图形处理器等)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储装置608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有电子设备600操作所需的各种程序和数据。处理装置601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
通常,以下装置可以连接至I/O接口605:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置606;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置607;包括例如磁带、硬盘等的存储装置608;以及通信装置609。通信装置609可以允许电子设备600与其他设备进行无线或有线通信以交换数据。虽然图6示出了具有各种装置的电子设备600,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置609从网络上被下载和安装,或者从存储装置608被安装,或者从ROM 602被安装。在该计算机程序被处理装置601执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,可以利用诸如HTTP(HyperText Transfer Protocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:确定客户端与服务端的长连接状态,所述服务端为部署有所述客户端相关业务服务的服务器;若所述客户端与所述服务端的长连接状态为在线状态,则从缓存读取所述客户端的运行状态,所述缓存用于保存安装客户端的设备响应于预设操作上报的所述客户端的运行状态,所述运行状态为前台状态或后台状态;根据所述客户端的运行状态,确定用户在线状态;根据所述用户在线状态,推送所述客户端相关的消息。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

Claims (11)

1.一种消息推送方法,其特征在于,应用于服务端,所述方法包括:
确定客户端与服务端的长连接状态;
若所述客户端与所述服务端的长连接状态为在线状态,则从缓存读取所述客户端的运行状态,所述缓存用于保存目标设备响应于预设操作上报的所述客户端的运行状态,所述目标设备中安装有所述客户端,所述运行状态包括前台状态或后台状态;
根据所述客户端的运行状态,确定用户在线状态;
根据所述用户在线状态,推送与所述客户端相关的消息。
2.根据权利要求1所述的方法,其特征在于,所述客户端包括与同一账户关联的多个客户端,每个客户端对应一个目标设备,
所述若所述客户端与所述服务端的长连接状态为在线状态,则从缓存读取所述客户端的运行状态,包括:
若存在至少一个所述目标设备中所述客户端与所述服务端的长连接状态为在线状态,则从缓存读取至少一个所述目标设备中所述客户端的运行状态;
所述根据所述客户端的所述运行状态,确定用户在线状态,包括:
当至少一个所述目标设备中所述客户端的运行状态存在所述前台状态时,确定所述用户在线状态为用于表征用户在线的状态;
当至少一个所述目标设备中所述客户端的运行状态均为所述后台状态时,确定所述用户在线状态为用于表征用户离线的状态。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述目标设备中所述客户端与所述服务端的长连接状态均为离线状态,则确定所述用户在线状态为用于表征用户离线的状态。
4.根据权利要求1-3任一所述的方法,其特征在于,所述客户端包括与同一账户关联的多个客户端,每个客户端对应一个目标设备,所述确定客户端与服务端的长连接状态,包括:
从所述缓存读取所有目标设备中所述客户端的运行状态;
若从所述缓存读取到至少一个所述目标设备中所述客户端的运行状态,且至少一个所述目标设备中所述客户端的运行状态存在前台状态,则确定所述客户端与所述服务端的长连接状态。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若从所述缓存读取到所有目标设备中所述客户端的运行状态,且所有目标设备中所述客户端的运行状态均为后台状态,则确定用户在线状态为用于表征用户离线的状态;
若从所述缓存未读取到所述客户端的运行状态,则确定用户在线状态为用于表征用户离线的状态。
6.根据权利要求1-3任一所述的方法,其特征在于,所述预设操作包括以下至少一种操作:所述客户端从所述前台状态切换为所述后台状态、所述客户端从所述后台状态切换为所述前台状态、所述客户端与所述服务端建立长连接。
7.根据权利要求1-3任一所述的方法,其特征在于,所述确定客户端与服务端的长连接状态,包括:
从长连接服务器查询所述客户端与所述服务端的长连接通道信息,所述长连接服务器用于建立所述客户端与所述服务端间的长连接通道,所述长连接通道信息用于表征所述客户端与所述服务端间的长连接通道是否断开;
根据所述长连接通道信息,确定所述客户端与所述服务端的长连接状态。
8.根据权利要求1-3任一所述的方法,其特征在于,所述根据所述用户在线状态,推送所述客户端相关的消息,包括:
若所述用户在线状态为用于表征用户在线的状态,则推送与所述客户端相关的站内消息;
若所述用户在线状态为用于表征用户在线的状态,则推送与所述客户端相关的站外消息。
9.一种消息推送装置,其特征在于,应用于服务端,所述装置包括:
第一确定模块,用于确定客户端与服务器的长连接状态;
读取模块,用于当所述客户端与所述服务端的长连接状态为在线状态时,从缓存读取所述客户端的运行状态,所述缓存用于保存目标设备响应于预设操作上报的所述客户端的运行状态,所述目标设备中安装有所述客户端,所述运行状态包括前台状态或后台状态;
第二确定模块,用于根据所述客户端的运行状态,确定用户在线状态;
推送模块,用于根据所述用户在线状态,推送与所述客户端相关的消息。
10.一种非临时性计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现权利要求1-8中任一项所述方法的步骤。
11.一种电子设备,其特征在于,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现权利要求1-8中任一项所述方法的步骤。
CN202211358506.0A 2022-11-01 2022-11-01 消息推送方法、装置、存储介质及电子设备 Pending CN115695358A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211358506.0A CN115695358A (zh) 2022-11-01 2022-11-01 消息推送方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211358506.0A CN115695358A (zh) 2022-11-01 2022-11-01 消息推送方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN115695358A true CN115695358A (zh) 2023-02-03

Family

ID=85047326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211358506.0A Pending CN115695358A (zh) 2022-11-01 2022-11-01 消息推送方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN115695358A (zh)

Similar Documents

Publication Publication Date Title
CN110781373B (zh) 榜单更新方法、装置、可读介质和电子设备
CN111432001B (zh) 用于跳转场景的方法、装置、电子设备和计算机可读介质
CN111246228B (zh) 直播间礼物资源更新方法、装置、介质及电子设备
CN111209306A (zh) 业务逻辑判断方法、装置、电子设备和存储介质
CN110674481B (zh) 一种应用程序的账号注册方法、装置、设备和存储介质
CN111614759A (zh) 资源分享方法、装置、电子设备及计算机可读介质
CN110908921A (zh) 一种游戏问题定位方法、装置、电子设备及存储介质
CN111309496A (zh) 延时任务实现方法、系统、装置、设备、存储介质
CN111596992B (zh) 导航栏展示方法、装置和电子设备
CN110855655B (zh) 一种信息验证方法、装置、设备和存储介质
CN110619101B (zh) 用于处理信息的方法和装置
CN115600964A (zh) 语音审批方法、装置及相关设备
CN115587860A (zh) 业务处理方法、装置、存储介质及电子设备
CN111460020B (zh) 用于解析消息的方法、装置、电子设备和介质
CN111212296B (zh) 直播间礼物列表配置方法、装置、介质及电子设备
CN115695358A (zh) 消息推送方法、装置、存储介质及电子设备
CN112162682A (zh) 内容显示方法、装置、电子设备及计算机可读存储介质
CN113079550A (zh) 移动终端控制方法、装置和电子设备
CN111444457A (zh) 数据发布方法、装置、存储介质及电子设备
CN114006880B (zh) 一种消息回执的获取方法、装置、电子设备和存储介质
CN111641693A (zh) 会话数据处理方法、装置及电子设备
CN111241443A (zh) 用于推送信息的方法、装置和电子设备
CN112799863A (zh) 用于输出信息的方法和装置
CN117692672B (zh) 基于快照的视频信息发送方法、装置、电子设备和介质
CN111625707B (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