一种用于推送即时消息的方法和装置与流程

文档序号:12134272阅读:142来源:国知局
一种用于推送即时消息的方法和装置与流程

本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及用于推送即时消息的方法和装置。



背景技术:

在移动互联网时代,越来越多的移动应用程序具有了即时通讯的功能,为用户提供信息交换的服务。其中的一些移动应用程序用于提供点对点的私聊功能以及一对多的群聊功能,这类软件的特点是保证消息的可靠推送,不同的消息按照发送的时间有序的呈现给接收用户。这种模式的消息服务提供可靠传输,但是受制于服务器的负载能力,消息的广播范围有限。另外,还存在网络直播软件,这种软件为用户提供通过弹幕来进行群体互动的服务,这种模式的消息服务可以对海量用户的消息广播,但是不能保证消息准确有序到达终端用户。

通常,不同的应用场景对即时消息推送的服务质量要求不一样,因此合适的信息推送模式不同,而现有技术一款应用程序通常仅支持一种即时消息的传递模式,因此仅能适用单一的场景,缺乏灵活性。



技术实现要素:

本申请的目的在于提出一种改进的用于推送即时消息的方法和装置,来解决以上背景技术部分提到的技术问题。

第一方面,本申请提供了一种用于推送即时消息的方法,该方法包括:接收长连接服务器重定向的即时消息,其中该即时消息是与该长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;确定该客户端集合的客户端数量;比较该客户端数量与第一阈值,并根据比较结果将该即时消息设置为对应的消息类型,其中,该客户端数量小于或等于第一阈值时对应的消息类型为反拉模式,该客户端数量大于第一阈值时对应的消息类型为直推模式;向该长连接服务器发起用于将已设置消息类型的该即时消息推送至该客户端集合的远程过程调用。

在一些实施例中,该向该长连接服务器发起将已设置消息类型的该即时消息推送至该客户端集合的远程过程调用,包括:确定该客户端数量是否大于第二阈值;若该客户端数量大于第二阈值,则将该客户端集合拆分成多个客户端数量小于或等于第二阈值的客户端子集;向该长连接服务器发起将已设置消息类型的该即时消息分别推送至各个客户端子集的多个远程过程调用。

在一些实施例中,该确定该客户端集合的客户端数量,包括:根据注册信息确定该客户端集合的客户端数量,其中,该注册信息是响应于该长连接服务器与客户端建立长连接时发送的客户端注册请求而生成的。

第二方面,本申请提供了又一种用于推送即时消息的方法,该方法包括:接收与该长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;将该即时消息重定向至消息服务器;接收该消息服务器在对该即时消息设置消息类型后、发起的将已设置消息类型的该即时消息推送至该客户端集合的远程过程调用;执行该远程过程调用以将该即时消息推送至该客户端集合;其中,该消息类型是该消息服务器对该客户端集合的客户端数量与第一阈值进行比较并根据比较结果对该即时消息设置的,该客户端数量小于第一阈值时对应的消息类型为反拉模式,该客户端数量大于第一阈值时对应的消息类型为直推模式。

在一些实施例中,该接收该消息服务器在对该即时消息设置消息类型后、发起的将已设置消息类型的该即时消息推送至该客户端集合的远程过程调用,包括:接收该消息服务器发出的多个远程过程调用,其中,每个远程过程调用分别用于将已设置消息类型的该即时消息推送至该客户端集合的不同客户端子集,该客户端子集是该消息服务器在该客户端集合的客户端数量大于第二阈值时对该客户端集合进行划分所得到的客户端数量小于第二阈值的客户端子集;以及该执行该远程过程调用以将该即时消息推送至该客户端集合,包括:依次执行该多个远程过程调用以按序将该即时消息推送到该客户端集合的多个客户端子集。

在一些实施例中,该方法还包括客户端注册步骤,该客户端注册步骤包括:与客户端建立长连接;向该消息服务器发出客户端注册请求,以使该消息服务器生成注册信息,该注册信息供该消息服务器确定该客户端集合的客户端数量。

在一些实施例中,该与客户端建立长连接,包括:使用代理调度线程与客户端建立通信连接;使用该代理调度线程根据均衡负载策略从代理执行线程集合中选择代理执行线程,并将所建立的通信连接的连接句柄写入至所选择的代理执行线程的连接队列中;使用该代理调度线程向所选择的代理执行线程的管道发送触发信息;使用该代理执行线程响应于接收该触发信息,从该连接队列中读取连接句柄,以接管该连接句柄对应的通信连接。

在一些实施例中,该执行该远程过程调用以向该客户端集合推送该信息,包括:使用推送调度线程根据均衡负载策略从推送执行线程集合中选择推送执行线程,并将该即时消息以及该远程过程调用中待推送客户端的客户端信息分配至所选择的推送执行线程;使用该推送执行线程将该即时消息以及该客户端信息转发至该代理调度线程;使用该代理调度线程在该连接队列中查询与客户端信息对应的连接句柄所在的代理执行线程,并将该即时消息传输给该代理执行线程;使用该代理执行线程通过该连接句柄对应的通信连接将该即时消息发送至对应的客户端。

第三方面,本申请提供了一种用于推送即时消息的装置,该装置包括:接收单元,用于接收长连接服务器重定向的即时消息,其中该即时消息是与该长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;确定单元,用于确定该客户端集合的客户端数量;设置单元,用于比较该客户端数量与第一阈值,并根据比较结果将该即时消息设置为对应的消息类型,其中,该客户端数量小于或等于第一阈值时对应的消息类型为反拉模式,该客户端数量大于第一阈值时对应的消息类型为直推模式;发起单元,用于向该长连接服务器发起用于将已设置消息类型的该即时消息推送至该客户端集合的远程过程调用。

在一些实施例中,该发起单元,包括:确定子单元,用于确定该客户端数量是否大于第二阈值;拆分子单元,用于若该客户端数量大于第二阈值,则将该客户端集合拆分成多个客户端数量小于或等于第二阈值的客户端子集;发起子单元,用于向该长连接服务器发起将已设置消息类型的该即时消息分别推送至各个客户端子集的多个远程过程调用。

在一些实施例中,该确定子单元进一步用于:根据注册信息确定该客户端集合的客户端数量,其中,该注册信息是响应于该长连接服务器与客户端建立长连接时发送的客户端注册请求而生成的。

第四方面,本申请提供了一种用于推送即时消息的装置,该装置包括:消息接收单元,用于接收与该长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;重定向单元,用于将该即时消息重定向至消息服务器;调用接收单元,用于接收该消息服务器在对该即时消息设置消息类型后、发起的将已设置消息类型的该即时消息推送至该客户端集合的远程过程调用;执行单元,用于执行该远程过程调用以将该即时消息推送至该客户端集合;其中,该消息类型是该消息服务器对该客户端集合的客户端数量与第一阈值进行比较并根据比较结果对该即时消息设置的,该客户端数量小于第一阈值时对应的消息类型为反拉模式,该客户端数量大于第一阈值时对应的消息类型为直推模式。

在一些实施例中,该调用接收单元进一步用于:接收该消息服务器发出的多个远程过程调用,其中,每个远程过程调用分别用于将已设置消息类型的该即时消息推送至该客户端集合的不同客户端子集,该客户端子集是该消息服务器在该客户端集合的客户端数量大于第二阈值时对该客户端集合进行划分所得到的客户端数量小于第二阈值的客户端子集;以及该执行单元进一步用于:依次执行该多个远程过程调用以按序将该即时消息推送到该客户端集合的多个客户端子集。

在一些实施例中,该装置还包括客户端注册单元,该客户端注册单元包括:长连接建立子单元,用于与客户端建立长连接;请求子单元,用于向该消息服务器发出客户端注册请求,以使该消息服务器生成注册信息,该注册信息供该消息服务器确定该客户端集合的客户端数量。

在一些实施例中,该长连接建立子单元进一步用于:使用代理调度线程与客户端建立通信连接;使用该代理调度线程根据均衡负载策略从代理执行线程集合中选择代理执行线程,并将所建立的通信连接的连接句柄写入至所选择的代理执行线程的连接队列中;使用该代理调度线程向所选择的代理执行线程的管道发送触发信息;使用该代理执行线程响应于接收该触发信息,从该连接队列中读取连接句柄,以接管该连接句柄对应的通信连接。

在一些实施例中,该执行单元进一步用于:使用推送调度线程根据均衡负载策略从推送执行线程集合中选择推送执行线程,并将该即时消息以及该远程过程调用中待推送客户端的客户端信息分配至所选择的推送执行线程;使用该推送执行线程将该即时消息以及该客户端信息转发至该代理调度线程;使用该代理调度线程在该连接队列中查询与客户端信息对应的连接句柄所在的代理执行线程,并将该即时消息传输给该代理执行线程;使用该代理执行线程通过该连接句柄对应的通信连接将该即时消息发送至对应的客户端。

本申请提供的用于推送即时消息的方法和装置,通过与服务器建立长连接的客户端数量确定推送即时消息的模式是反拉模式或直推模式,从而可以使得即时信息的推送模式可以匹配当前的场景,能满足不同场景下对即时消息的不同传输要求。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是根据本申请的用于推送即时消息的方法的一个实施例的流程图;

图3是根据本申请的用于推送即时消息的方法的又一个实施例的流程图;

图4a是根据图3对应实施例的一个实现方式中与客户端建立长连接时的交互示意图;

图4b是根据图3对应实施例的一个实现方式中推送消息时的交互示意图;

图5是根据本申请的用于推送即时消息的装置的一个实施例的结构示意图;

图6是根据本申请的用于推送即时消息的装置的又一个实施例的结构示意图;

图7是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。

具体实施方式

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

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请的用于推送即时消息的方法或用于推送即时消息的装置的实施例的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104、106、长连接服务器105和消息服务器107。网络104用以在终端设备101、102、103和长连接服务器105以及在长连接服务器105和消息服务器107之间提供通信链路的介质。网络104、106可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如视频直播类应用、即时通信工具、邮箱客户端、社交平台软件等。

终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。

长连接服务器105可以是提供各种服务的服务器,可以从终端设备101、102、103接收信息并重定向至消息服务器107,消息服务器107可以对信息进行处理后将消息发送给长连接服务器105,由长连接服务器105将信息发送给终端设备101、102、103。

需要说明的是,图2对应实施例所提供的用于推送即时消息的方法一般由消息服务器107执行,相应地,图5所示的用于推送即时消息的装置一般设置于消息服务器107中;图3对应实施例所提供的用于推送即时消息的方法一般由长连接服务器105执行,相应地,图6所示的用于推送即时消息的装置一般设置于长连接服务器105中。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

继续参考图2,示出了根据本申请的用于推送即时消息的方法的一个实施例的流程200。该用于推送即时消息的方法,包括以下步骤:

步骤201,接收长连接服务器重定向的即时消息。

在本实施例中,用于推送即时消息的方法运行于其上的电子设备(例如图1所示的消息服务器)可以通过有线连接方式或者无线连接方式从长连接服务器接收即时消息。该即时消息可以是与该长连接服务器建立长连接的客户端发送的,该消息可以是文字、图片、声音、音频或视频等各种消息。长连接服务器在接收到该即时消息后,可以将该即时消息重定向至电子设备(即消息服务器)。长连接,指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

通常,用户利用终端上安装的即时通信工具或视频直播平台等社交应用来浏览和交互信息,这时,用户可以通过该社交应用直接输入信息。

步骤202,确定客户端集合的客户端数量。

在本实施例中,电子设备可以通过各种方式确定与长连接服务器建立长连接的客户端集合的客户端数量。

在本实施例的一些可选实现方式中,步骤202可以包括:根据注册信息确定客户端集合的客户端数量,其中,注册信息是响应于长连接服务器与客户端建立长连接时发送的客户端注册请求而生成的。

步骤203,比较客户端数量与第一阈值,并根据比较结果将即时消息设置为对应的消息类型。

在本实施例中,用于推送即时消息的方法运行于其上的电子设备上可以首先将基于步骤203所得到的客户端数量与第一阈值进行比较。之后,电子设备可以根据比较结果将即时消息设置为对应的消息类型。其中,客户端数量小于或等于第一阈值时对应的消息类型为反拉模式,客户端数量大于第一阈值时对应的消息类型为直推模式。反拉模式和直推模式是即时消息的两种不同传递模式。反拉模式是在有新消息产生时,服务端给当前在线的客户端发送一个通知,客户端收到通知后,主动向服务端请求新消息的数据。反拉模式,可以保证消息投递的准确性、时序性,但是一条消息的推送多了一次网络交互,增大了消息传送的时延,同时也给服务器增大了一倍的访问压力。直推模式在将一条消息推送到客户端时只有一次网络交互,后端服务器的推送压力较小,延迟低,但是在服务高峰期会出现消息丢失,时序错乱的问题。直推模式,则是有新消息产生时,服务端将消息体直接推送给在线的客户端,服务端和客户端不需要进行投递成功的确认,属于“尽力传递”。

步骤204,向长连接服务器发起用于将已设置消息类型的即时消息推送至客户端集合的远程过程调用。

在本实施例中,基于执行步骤203所得到的已设置消息类型的即时消息,电子设备可以向长连接服务器发起用于将已设置消息类型的即时消息推送至客户端集合的远程过程调用。

在本实施例的一些可选实现方式中,步骤204可以包括:确定客户端数量是否大于第二阈值;若客户端数量大于第二阈值,则将客户端集合拆分成多个客户端数量小于或等于第二阈值的客户端子集;向长连接服务器发起将已设置消息类型的即时消息分别推送至各个客户端子集的多个远程过程调用。

本申请的上述实施例提供的方法,通过与服务器建立长连接的客户端数量确定推送即时消息的模式是反拉模式或直推模式,从而可以使得即时信息的推送模式可以匹配当前的场景,能满足不同场景下对即时消息的不同传输要求。

进一步参考图3,其示出了用于推送即时消息的方法的又一个实施例的流程300。该用于推送即时消息的方法的流程300,包括以下步骤:

步骤301,接收与长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息。

在本实施例中,用于推送即时消息的方法运行于其上的电子设备(例如图1所示的长连接服务器)可以通过有线连接方式或者无线连接方式从用户利用其进行信息交互的终端接收即时消息。

步骤302,将即时消息重定向至消息服务器。

在本实施例中,电子设备可以将步骤301所接收到的即时消息重定向至消息服务器。

步骤303,接收消息服务器在对即时消息设置消息类型后、发起的将已设置消息类型的即时消息推送至客户端集合的远程过程调用。

在本实施例中,基于步骤302重定向至消息服务器的即时消息,消息服务器可以对客户端集合的客户端数量与第一阈值进行比较并根据比较结果对该即时消息设置消息类型的。其中,当客户端数量小于第一阈值时对应的消息类型为反拉模式,客户端数量大于第一阈值时对应的消息类型为直推模式。之后,消息服务器可以向电子设备发起将已设置消息类型的即时消息推送至客户端集合的远程过程调用。如此,电子设备即可接收到该远程过程调用。

步骤304,执行远程过程调用以将即时消息推送至客户端集合。

在本实施例中,基于步骤303所接收到的远程过程调用,电子设备可以执行该远程过程调用,从而可以将已设置好消息类型的该即时消息推送至客户端集合。对于消息类型为直推模式的即时消息,长连接服务器直接将即时消息的消息内容推送至各个客户端,客户端即可展示消息内容。对于消息类型为直推模式的即时消息,长连接服务器可以首先将即时消息的更新消息推送至各个客户端,客户端可以在接收到更新消息向长连接服务器发送对新的即时消息的增量拉取请求,从而使长连接服务器在接收到给增量拉取请求后再向客户端推送即时消息的消息内容。

在本实施例的一些可选实现方式中,上述步骤303可以包括:接收消息服务器发出的多个远程过程调用,其中,每个远程过程调用分别用于将已设置消息类型的即时消息推送至客户端集合的不同客户端子集,客户端子集是消息服务器在客户端集合的客户端数量大于第二阈值时对客户端集合进行划分所得到的客户端数量小于第二阈值的客户端子集。此外,步骤304可以包括:依次执行多个远程过程调用以按序将即时消息推送到客户端集合的多个客户端子集。

在本实施例的一些可选实现方式中,上述方法还包括客户端注册步骤,该客户端注册步骤包括:与客户端建立长连接;向消息服务器发出客户端注册请求,以使消息服务器生成注册信息,注册信息供消息服务器确定客户端集合的客户端数量。

在本实施例的一些可选实现方式中,上述与客户端建立长连接,包括:使用代理调度线程与客户端建立通信连接;使用代理调度线程根据均衡负载策略从代理执行线程集合中选择代理执行线程,并将所建立的通信连接的连接句柄写入至所选择的代理执行线程的连接队列中;使用代理调度线程向所选择的代理执行线程的管道发送触发信息;使用代理执行线程响应于接收触发信息,从连接队列中读取连接句柄,以接管连接句柄对应的通信连接。其中,负载均衡是将任务分摊到多个操作单元上进行执行,从而共同完成工作任务。具体的负载均衡算法可以是轮询法、随机法、源地址哈希法、加权轮询法、最小连接数法中的任意一种。

图4a示出了该实现方式中长连接服务器与客户端建立长连接的交互示意图。如图4a所示,这一过程可以包括如下步骤:首先,长连接服务器402中的代理调度线程(可命名为proxy_dispatcher)4021可以与客户端建立通信连接;其次,代理调度线程4021可以根据负载均衡策略从代理执行线程(可命名为proxy_worker)4022和代理执行线程4023中选择出代理执行线程4023并将所建立的通信连接的连接句柄写入至执行线程4023的连接队列;接着,代理调度线程4021可以向执行线程4023的管道发送信息以触发代理执行线程读取连接队列中的连接句柄;之后,代理执行线程4023即可通过读取连接句柄接管上述通信连接。如此,长连接服务器402即可与客户端最终建立长连接服务器。此外,在建立长连接后,代理执行线程4023还可以回调消息服务器404所提供的服务以向回调消息服务器404发送注册请求,从而在消息服务器404中对已建立长连接的客户端进行注册,生成注册信息。

在本实施例的一些可选实现方式中,上述步骤304可以包括:使用推送调度线程根据均衡负载策略从推送执行线程集合中选择推送执行线程,并将即时消息以及远程过程调用中待推送客户端的客户端信息分配至所选择的推送执行线程;使用推送执行线程将即时消息以及客户端信息转发至代理调度线程;使用代理调度线程在连接队列中查询与客户端信息对应的连接句柄所在的代理执行线程,并将即时消息传输给代理执行线程;使用代理执行线程通过连接句柄对应的通信连接将即时消息发送至对应的客户端。

图4b示出了该实现方式中推送消息时的交互示意图。首先,当用户通过客户端401在所在用户群组中发出即时消息时,客户端401将该即时消息通过与长连接服务器402已建立的长连接发送至长连接服务器402中对应的代理执行线程4023。接着,长连接服务器402的代理执行线程4023将该即时消息重定向至消息服务器403。消息服务器403可以通过一系列操作设置消息类型并向长连接服务器402发起用于将已设置消息类型的即时消息推送至客户端集合的远程过程调用。其中,上述一系列操作可以包括:通过注册信息查询客户端集合的客户端数量;判断客户端数量是否大于500,若大于则将消息类型设置为直推模式,若不大于则将消息类型设置为反拉模式;之后,消息服务器403可以判断客户端数量是否大于4000,若小于则直接发起对已设置消息类型的即时消息推送至客户端集合的远程过程调用,若大于则将客户端集合拆分成10个客户端子集后将每个客户端子集的任务子集提交到消息队列并下发至推送任务。其中拆分的操作可以执行多次直到每个客户端子集中客户端数量小于4000。在发起远程过程调用时,消息服务器403可以将已设置消息类型的即时消息以及所推送的客户端集合的客户端信息发送至长连接服务器402的推送调度线程(可命名为push_dispatcher)4024,推送调度线程4024可以按照均衡负载策略从推送执行线程(可命名为push_worker)4025和推送执行线程4026选出推送执行线程4025并将客户端信息和即时消息分配给推送执行线程4025。之后,处于推送进程的推送执行线程4025可以通过进程间通信将客户端信息和即时消息转发给代理调度线程4021,代理调度线程4021可以根据客户端信息选择对应的代理执行线程4022并将即时消息传输给代理执行线程4022。最后,代理执行线程4022可以通过对应的通信连接将即时消息推送给客户端402。

从图3中可以看出,通过与服务器建立长连接的客户端数量确定推送即时消息的模式是反拉模式或直推模式,从而可以使得即时信息的推送模式可以匹配当前的场景,能满足不同场景下对即时消息的不同传输要求。

进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种用于推送即时消息的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图5所示,本实施例所描述的用于推送即时消息的装置500包括:接收单元501、确定单元502、设置单元503和发起单元504。其中,接收单元501用于接收长连接服务器重定向的即时消息,其中即时消息是与长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;确定单元502用于确定客户端集合的客户端数量;设置单元503用于比较客户端数量与第一阈值,并根据比较结果将即时消息设置为对应的消息类型,其中,客户端数量小于或等于第一阈值时对应的消息类型为反拉模式,客户端数量大于第一阈值时对应的消息类型为直推模式;而发起单元504用于向长连接服务器发起用于将已设置消息类型的即时消息推送至客户端集合的远程过程调用。

在本实施例中,用于推送即时消息的装置500的接收单元501、确定单元502、设置单元503和发起单元504的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203和步骤204,这里不再赘述。

在本实施例的一些可选实现方式中,发起单元504,包括:确定子单元(未示出),用于确定客户端数量是否大于第二阈值;拆分子单元(未示出),用于若客户端数量大于第二阈值,则将客户端集合拆分成多个客户端数量小于或等于第二阈值的客户端子集;发起子单元(未示出),用于向长连接服务器发起将已设置消息类型的即时消息分别推送至各个客户端子集的多个远程过程调用。

在本实施例的一些可选实现方式中,确定子单元进一步用于:根据注册信息确定客户端集合的客户端数量,其中,注册信息是响应于长连接服务器与客户端建立长连接时发送的客户端注册请求而生成的。

进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种用于推送即时消息的装置的一个实施例,该装置实施例与图4所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。

如图6所示,本实施例所描述的用于推送即时消息的装置600包括:消息接收单元601、重定向单元602、调用接收单元603和执行单元604。其中,消息接收单元601用于接收与长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;重定向单元602用于将即时消息重定向至消息服务器;调用接收单元603用于接收消息服务器在对即时消息设置消息类型后、发起的将已设置消息类型的即时消息推送至客户端集合的远程过程调用;而执行单元604用于执行远程过程调用以将即时消息推送至客户端集合,其中,消息类型是消息服务器对客户端集合的客户端数量与第一阈值进行比较并根据比较结果对即时消息设置的,客户端数量小于第一阈值时对应的消息类型为反拉模式,客户端数量大于第一阈值时对应的消息类型为直推模式。

在本实施例中,用于推送即时消息的装置600的消息接收单元601、重定向单元602、调用接收单元603和执行单元604的具体处理可以参考图4对应实施例中的步骤401、步骤402、步骤403和步骤404,这里不再赘述。

在本实施例的一些可选实现方式中,调用接收单元603进一步用于:接收消息服务器发出的多个远程过程调用,其中,每个远程过程调用分别用于将已设置消息类型的即时消息推送至客户端集合的不同客户端子集,客户端子集是消息服务器在客户端集合的客户端数量大于第二阈值时对客户端集合进行划分所得到的客户端数量小于第二阈值的客户端子集;以及执行单元604进一步用于:依次执行多个远程过程调用以按序将即时消息推送到客户端集合的多个客户端子集。

在本实施例的一些可选实现方式中,装置还包括客户端注册单元,客户端注册单元包括:长连接建立子单元,用于与客户端建立长连接;请求子单元,用于向消息服务器发出客户端注册请求,以使消息服务器生成注册信息,注册信息供消息服务器确定客户端集合的客户端数量。

在本实施例的一些可选实现方式中,长连接建立子单元进一步用于:使用代理调度线程与客户端建立通信连接;使用代理调度线程根据均衡负载策略从代理执行线程集合中选择代理执行线程,并将所建立的通信连接的连接句柄写入至所选择的代理执行线程的连接队列中;使用代理调度线程向所选择的代理执行线程的管道发送触发信息;使用代理执行线程响应于接收触发信息,从连接队列中读取连接句柄,以接管连接句柄对应的通信连接。

在本实施例的一些可选实现方式中,执行单元进一步用于:使用推送调度线程根据均衡负载策略从推送执行线程集合中选择推送执行线程,并将即时消息以及远程过程调用中待推送客户端的客户端信息分配至所选择的推送执行线程;使用推送执行线程将即时消息以及客户端信息转发至代理调度线程;使用代理调度线程在连接队列中查询与客户端信息对应的连接句柄所在的代理执行线程,并将即时消息传输给代理执行线程;使用代理执行线程通过连接句柄对应的通信连接将即时消息发送至对应的客户端。

下面参考图7,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统700的结构示意图。

如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。

以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括接收单元、确定单元、设置单元和发起单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,发起单元还可以被描述为“接收用户的网页浏览请求向长连接服务器发起用于将已设置消息类型的即时消息推送至客户端集合的远程过程调用的单元”。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当上述一个或者多个程序被一个设备执行时,使得该设备:接收长连接服务器重定向的即时消息,其中所述即时消息是与所述长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;确定所述客户端集合的客户端数量;比较所述客户端数量与第一阈值,并根据比较结果将所述即时消息设置为对应的消息类型,其中,所述客户端数量小于或等于第一阈值时对应的消息类型为反拉模式,所述客户端数量大于第一阈值时对应的消息类型为直推模式;向所述长连接服务器发起用于将已设置消息类型的所述即时消息推送至所述客户端集合的远程过程调用。或者,上述非易失性计算机存储介质存储有一个或者多个程序,当上述一个或者多个程序被一个设备执行时,使得该设备:接收与所述长连接服务器已建立长连接的客户端集合中的客户端所发送的即时消息;将所述即时消息重定向至消息服务器;接收所述消息服务器在对所述即时消息设置消息类型后、发起的将已设置消息类型的所述即时消息推送至所述客户端集合的远程过程调用;执行所述远程过程调用以将所述即时消息推送至所述客户端集合;其中,所述消息类型是所述消息服务器对所述客户端集合的客户端数量与第一阈值进行比较并根据比较结果对所述即时消息设置的,所述客户端数量小于第一阈值时对应的消息类型为反拉模式,所述客户端数量大于第一阈值时对应的消息类型为直推模式。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

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