一种向客户端推送内容的方法及推送服务器的制造方法

文档序号:9330631阅读:644来源:国知局
一种向客户端推送内容的方法及推送服务器的制造方法
【技术领域】
[0001]本发明涉及互联网技术领域,尤其涉及一种向客户端推送内容的方法及推送服务器。
【背景技术】
[0002]客户端和服务器的通信方式通常有socket (套接字)方式通信数据;或http (超文本传输协议)方式拉取数据。
[0003]服务器和客户端通过socket通信数据,其优点有实时性高,可做广播和可实现逻辑比较复杂的业务;其缺点在于稳定性和安全性都依赖于服务器的代码质量。当服务端的入口地址更改或者业务服务器出现问题就会导致业务功能不能正常使用,还需要做网关服务器等一系列服务器来确保稳定性,且服务端直接与客户端相连接,增加了安全隐患。服务器与客户端通过http方式通信的优点是稳定性和安全性有web服务器来做保证,缺点在于不能实现广播、逻辑性比较复杂和实时性较高的业务。
[0004]目前,亟需一种客户端与服务器之间的通信方法,在安全、稳定的情况下,保证广播、逻辑复杂业务及实时性较高的业务的实现。

【发明内容】

[0005]本发明要解决的技术问题是提供一种向客户端推送内容的方法及推送服务器,能够在保证安全、稳定的情况下,实现广播、逻辑复杂及实时性较高的业务。
[0006]为解决上述技术问题,本申请的一种向客户端推送内容的方法,包括:
[0007]推送服务器建立客户端与业务服务器的连接并为客户端分配推送通道;
[0008]所述推送服务器接收所述客户端在连接到所述推送通道后发送的业务请求,将所述业务请求发送给所述业务服务器;
[0009]所述推送服务器将所述业务服务器根据业务请求进行相应处理时返回的信息通过为客户端分配的推送通道推送给所述客户端。
[0010]进一步地,所述方法还包括:
[0011]所述推送服务器在为客户端分配推送通道后,还为推送通道生成通道标识,并将通道标识返回给客户端,以使客户端根据通道标识连接到推送通道,所述通道标识包括用户标识、用户密码和扰码。
[0012]进一步地,所述推送服务器在为推送通道生成通道标识后,还以所述用户标识为索引将所述用户密码和扰码保存到密码队列中;
[0013]所述推送服务器将所述业务服务器根据业务请求进行相应处理后返回的信息通过为客户端分配的推送通道推送给所述客户端,包括:接收业务服务器返回的信息,根据携带的用户标识从密码队列中读取出用户标识对应的用户密码和扰码,生成客户端对应的推送通道的通道标识;根据通道标识将信息推送到相应通道,使连接到所述推送通道的客户端接收到信息。
[0014]进一步地,所述推送服务器为超文本传输协议http服务器,所述业务服务器为套接字socket服务器;所述推送服务器在向所述业务服务器发送消息时,将消息转换为socket格式;所述业务服务器在向所述推送服务器发送消息时,通过转发服务器将消息转换为http格式并转发给所述推送服务器。
[0015]进一步地,所述推送服务器建立客户端与业务服务器的连接,包括:
[0016]所述推送服务器接收客户端发送的连接请求,从所述连接请求中提取出用户密码,并将所述连接请求发送给所述业务服务器;
[0017]所述推送服务器接收业务服务器根据连接请求为客户端分配的用户标识,向客户端返回连接确认。
[0018]进一步地,一种推送服务器,包括:拓展脚本模块和推送模块,其中:
[0019]所述拓展脚本模块,用于建立客户端与业务服务器的连接并为客户端分配推送通道;接收所述客户端在连接到所述推送通道后发送的业务请求,将所述业务请求发送给所述业务服务器;
[0020]所述推送模块,用于将所述业务服务器根据业务请求进行相应处理时返回的信息通过为客户端分配的推送通道推送给所述客户端。
[0021]进一步地,所述拓展脚本模块,还用于在为客户端分配推送通道后,为推送通道生成通道标识,并将通道标识返回给客户端,以使客户端根据通道标识连接到推送通道,所述通道标识包括用户标识、用户密码和扰码。
[0022]进一步地,所述拓展脚本模块,还用于在为推送通道生成通道标识后,以所述用户标识为索引将所述用户密码和扰码保存到密码队列中;
[0023]所述推送模块将所述业务服务器根据业务请求进行相应处理后返回的信息通过为客户端分配的推送通道推送给所述客户端,包括:接收业务服务器返回的信息,根据携带的用户标识从密码队列中读取出用户标识对应的用户密码和扰码,生成客户端对应的推送通道的通道标识;根据通道标识将信息推送到相应通道,使连接到所述推送通道的客户端接收到信息。
[0024]进一步地,所述拓展脚本模块,还用于在向所述业务服务器发送消息时,将消息转换为套接字socket格式;从所述业务服务器接收业务服务器通过转发服务器转换为超文本传输协议http格式并转发的消息。
[0025]进一步地,所述拓展脚本模块建立客户端与业务服务器的连接,包括:
[0026]接收客户端发送的连接请求,从所述连接请求中提取出用户密码,并将所述连接请求发送给所述业务服务器;
[0027]接收业务服务器根据连接请求为客户端分配的用户标识,向客户端返回连接确认。
[0028]综上所述,本申请中的推送服务器作为客户端与业务服务器的中间层,可起到网关服务器的作用,当业务服务器出现问题时,也可以随时进行调整,业务服务器不与客户端直接连接减少安全隐患,且具体稳定和高并发的特点,可扩展性更强。
【附图说明】
[0029]图1为本申请的向客户端推送内容的方法的流程图;
[0030]图2为本申请的向客户端推送内容的方法的交互图;
[0031]图3为本申请的推送服务器的架构图。
【具体实施方式】
[0032]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0033]实施例1:
[0034]如图1所示,本申请的向客户端推送内容的方法,包括:
[0035]步骤101:推送服务器建立客户端与业务服务器的连接并为客户端分配推送通道;
[0036]客户端向推送服务器发送连接请求,推送服务器从连接请求中提取出用户密码,并将连接请求转换成socket格式,通过UDP方式发给业务服务器。业务服务器为用户(客户端)分配一个用户标识(UID),通过turnServer (转发服务器)将携带UID的消息转换成http格式发给推送服务器。
[0037]推送服务器接收到业务服务器发送的为客户端分配的用户标识后,判断客户端是否拥有推送通道,如果没有,则为客户端分配推送通道,并为推送通道生成通道标识。推送服务器向客户端返回连接确认,通过连接确认将通道标识返回给客户端,以使客户端能够根据通道标识连接到推送通道。
[0038]通道标识包括用户标识、用户密码和扰码。用户标识为业务服务器为客户端所分配;用户密码为客户端在连接请求中所携带;扰码为推送服务器随机生成,一次登录中扰码保持不变。推送服务器在为推送通道生成通道标识后,以用户标识为索引将用户密码和扰码保存到密码队列中。
[0039]本申请中,推送服务器为http服务器,如可采用web服务器中的nginx服务器。推送服务器在向业务服务器发送连接请求以及其他消息时,将消息转换为socket格式。例如,推送服务器采用nginx服务器时,通过nginx服务器中的ngx_lua(拓展脚本)模块上运行的自定义Iua脚本将消息转成socket格式。
[0040]业务服务器为socket服务器。业务服务器在向推送服务器发送为客户端分配的用户标识以及其他消息时,通过转发服务器将消息转换为http格式并转发给推送服务器。
[0041]步骤102:推送服务器接收客户端在连接推送通道后发送的业务请求,将业务请求发送给业务服务器;
[0042]客户端在接收到推送服务器返回的通道标识后,根据通道标识连接到推送通道。例如,通道标识中的用户密码以joinAuthKey表示,用户标识以uid表示,扰码以channel表示,则客户端在接收到通道标识后,可以通过访问地址http://服务端地址/sub/$ {joinAuthKey}_channel_$ {uid}连接到推送通道。客户端在连接到推送通道后,在有业务需求时,向推送服务器发送业务请求。
[0043]推送服务器在接收到客户端发送的业务请求后,将业务请求转换为socket格式,将socket格式的业务请求发送给业务服务器。
[0044]步骤103:推送服务器将业务服务器根据业务请求进行相应处理时返回的信息通过为客户端分配的推送通道推送给客户端。
[0045]推送服务器在将业务请求发送给业务服务器后,业务服务器根据业务请求进行相应处理,并向推送服务器返回信息。在返回的信息中携带为客户端分配的用户标识。携带业务服务器返回的信息的消息经转发服务器转换为http格式后转发给推送服务器。
[0046]例如,针对聊天业务,客户端A在需要向客户端B发送消息时,向推送服务器发送业务请求。推送服务器将业务请求转换为socket格式后发送给业务服务器。业务服务器根据客户端A的业务请求将客户端A的消息推送给客户端B,并将客户端B返回的消息通过转发服务器发送给推送服务器。推送服务器通过为客户端A分配的推送通道将业务服务器返回的消息推送给客户端A。
[0047]推送服务器将业务服务器返回的信息通过为客户端分配的推送通道推送给客户端,可以是:接收业务服务器返回的信息,根据信息中携带的用户标识从密码队列中读取出用户标识对应的用户密码和扰码,生成客户端对应的推送通道的通道标识;根据通道标识将业务服务器返回的信息推送到相应通道,使连接到推送通道的客户端接收到信息。
[0048]实施例2:
[0049]下面以客户端、推送服务器和业务服务器相互交互的方式说明本申请的向客户端推送内容的方法,其中,推送服务器采用nginx服务器,包含ngx_lua (拓展脚本)模块和推送(push)模块。推送服务器与业务服务器之间通过转发服务器进行消息格式的转换和转发。
[0050]步骤201:客户端向ngx_lua模块发送连接请求;
[0051]客户端在需要与业务服务器建立连接时,向推送服务器发送连接请求,以通过推
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1