基于websocket的单用户多地登录分布式推送的方法技术

技术编号:21719422 阅读:49 留言:0更新日期:2019-07-27 21:55
本发明专利技术提出一种基于websocket的单用户多地登录分布式推送的方法,属于信息推送技术领域。本发明专利技术解决了目前消息推送过程中出现的不足及无法适用到一些特需场景的问题,其技术方案要点为:利用消息队列,及缓存服务器对用户的缓存,当应用后台进行消息推送时,如果为群发消息,使用已声明好的广播式交换机,及通用的群发路由键将消息推送到所有的群发的队列中;所有的websocket服务器都监听到该群发消息,此时将消息发送到连接到自身websocket服务器的所有客户端。本发明专利技术既满足了分布式部署,支持当前流行的容器化一键部署,使部署更便捷,同时更是满足了同一用户在不同地方登录后,所有客户端对推送消息的需求。

Distributed push method based on Web socket for single user and multiple login

【技术实现步骤摘要】
基于websocket的单用户多地登录分布式推送的方法
本专利技术涉及信息推送技术,特别涉及基于websocket的单用户多地登录分布式推送的方法的技术。
技术介绍
信息推送是指客户端能自动收到服务器端发送的信息,其目的是为了让用户获取到最新的消息和数据,使用户能及时查看到最新信息,提升用户体验。目前web实时推送技术主要采用两种方式,一种是采用http轮询的方法实现,定时向web服务器发送http请求,等待新的数据返回,这种方法对服务器和客户端都有较大开销;另一种方式是搭建websocket服务器,由于websocket本身不支持分布式部署,扩展性较差,常规的使用kafka+redis的方案虽然能较好的做到扩展,但每次增加节点需手动处理,较为麻烦,另外,同一个用户,在不同地方登录时,无法同时连接到该websocket服务器,在单用户支持多地登录的场景下,如手机和两台电脑上同时登录同一用户,现有方案无法很好解决。
技术实现思路
本专利技术的目的是提供一种基于websocket的单用户多地登录分布式推送的方法,解决目前消息推送过程中出现的不足及无法适用到一些特需场景的问题。本专利技术解决其技术问题,采用的技术方案是:基于websocket的单用户多地登录分布式推送的方法,包括如下步骤:A.启动websocket服务器,生成一个多位随机服务器id,使用一个指定前缀加服务器id在消息队列上声明一个队列,将该队列与事先声明好的一个发布订阅模式交换机进行绑定,绑定使用的路由键为指定前缀加服务器id,同时对刚声明的队列进行监听,另外,事先声明一个广播式交换机,声明一个群发使用的队列,所述群发使用的队列的队列名也是使用指定前缀加服务器id的方式,使用一个通用的路由键与上述广播式交换机绑定,启动websocket服务器时会同时监听该群发使用的队列;B.客户端通过应用后台进行用户登录操作,在登陆后,后台服务返回一个携带用户id,即uid的及有效期的token;C.客户端携带token通过负载均衡后,与websocket服务器作长连接操作;D.websocket服务器通过token解析有效期及uid,对有效期内的uid进行二次处理,通过uid加多位的随机uuid,再加服务器id,形成一个新的wsuid,将该wsuid作为客户端连接id,建立缓存,同时,在缓存服务器中通过uid做key,wsuid加serverid做值进行缓存;E.当应用后台进行消息推送时,如果为群发消息,使用步骤A中已声明好的广播式交换机,及通用的群发路由键将消息推送到所有的群发的队列中;F.所有的websocket服务器都监听到该群发消息,此时将消息发送到连接到自身websocket服务器的所有客户端,完成所有用户都能收到该消息,或一个用户在不同客户端登录情况下,都能收到消息。具体的是,步骤A中,所述随机服务器id的位数为八位。进一步的是,步骤A中,所述指定前缀为websocket.msg.。具体的是,步骤D中,所述多位的随机uuid的位数为八位。进一步的是,步骤E中,若推送的消息为指定用户的推送,则通过uid在redis中查询所有对应该uid的wsuid及服务器id,使用步骤A中已声明好的发布订阅模式交换机,根据服务器id,将消息携带wsuid推送到对应的对列中,websocket服务器将通过监听不同的队列,只接收到对应自身服务器id的wsuid所需推送的消息,将消息指定wsuid推送到客户端,完成同一用户在不同地方登录时,保证所有该用户客户端收到对应的消息。本专利技术的有益效果是,通过上述基于websocket的单用户多地登录分布式推送的方法,既满足了分布式部署,支持当前流行的容器化一键部署,使部署更便捷,同时更是满足了同一用户在不同地方登录后,所有客户端对推送消息的需求。具体实施方式下面结合实施例,详细描述本专利技术的技术方案。本专利技术所述基于websocket的单用户多地登录分布式推送的方法,包括如下步骤:A.启动websocket服务器,生成一个多位随机服务器id,使用一个指定前缀加服务器id在消息队列上声明一个队列,将该队列与事先声明好的一个发布订阅模式交换机进行绑定,绑定使用的路由键为指定前缀加服务器id,同时对刚声明的队列进行监听,另外,事先声明一个广播式交换机,声明一个群发使用的队列,其中,群发使用的队列的队列名也是使用指定前缀加服务器id的方式,使用一个通用的路由键与上述广播式交换机绑定,启动websocket服务器时会同时监听该群发使用的队列。B.客户端通过应用后台进行用户登录操作,在登陆后,后台服务返回一个携带用户id,即uid的及有效期的token。C.客户端携带token通过负载均衡后,与websocket服务器作长连接操作。D.websocket服务器通过token解析有效期及uid,对有效期内的uid进行二次处理,通过uid加多位的随机uuid,再加服务器id,形成一个新的wsuid,将该wsuid作为客户端连接id,建立缓存,同时,在缓存服务器中通过uid做key,wsuid加serverid做值进行缓存。E.当应用后台进行消息推送时,如果为群发消息,使用步骤A中已声明好的广播式交换机,及通用的群发路由键将消息推送到所有的群发的队列中。F.所有的websocket服务器都监听到该群发消息,此时将消息发送到连接到自身websocket服务器的所有客户端,完成所有用户都能收到该消息,或一个用户在不同客户端登录情况下,都能收到消息。实施例一本专利技术实施例基于websocket的单用户多地登录分布式推送的方法,包括如下步骤:A.启动websocket服务器,生成一个八位随机服务器id,使用一个指定前缀加服务器id在消息队列上声明一个队列,其中,指定前缀优选为websocket.msg.,将该队列与事先声明好的一个发布订阅模式交换机进行绑定,绑定使用的路由键为指定前缀加服务器id,同时对刚声明的队列进行监听;另外,事先会声明一个广播式交换机,声明一个群发使用的队列,队列名也是使用指定前缀加serverId的方式,使用一个通用的路由键与上述广播式交换机绑定,启动websocket服务器时会同时监听该群发使用的队列。B.客户端通过应用后台进行用户登录操作,在登陆后,后台服务返回一个携带用户id,即uid的及有效期的token;C.客户端携带token通过负载均衡后,与websocket服务器作长连接操作;D.websocket服务器通过token解析有效期及uid,对有效期内的uid进行二次处理,通过uid加多位的随机uuid,其中,多位的随机uuid的位数为八位,再加服务器id,形成一个新的wsuid,将该wsuid作为客户端连接id,建立缓存,同时,在缓存服务器中通过uid做key,wsuid加serverid做值进行缓存;E.当应用后台进行消息推送时,如果为群发消息,使用步骤A中已声明好的广播式交换机,及通用的群发路由键将消息推送到所有的群发的队列中;F.所有的websocket服务器都监听到该群发消息,此时将消息发送到连接到自身websocket服务器的所有客户端,完成所有用户都能收到该消息,或一个用户在不同客户端登录情况下,都能收到消息本文档来自技高网...

【技术保护点】
1.基于websocket的单用户多地登录分布式推送的方法,其特征在于,包括如下步骤:A.启动websocket服务器,生成一个多位随机服务器id,使用一个指定前缀加服务器id在消息队列上声明一个队列,将该队列与事先声明好的一个发布订阅模式交换机进行绑定,绑定使用的路由键为指定前缀加服务器id,同时对刚声明的队列进行监听,另外,事先声明一个广播式交换机,声明一个群发使用的队列,所述群发使用的队列的队列名也是使用指定前缀加服务器id的方式,使用一个通用的路由键与上述广播式交换机绑定,启动websocket服务器时会同时监听该群发使用的队列;B.客户端通过应用后台进行用户登录操作,在登陆后,后台服务返回一个携带用户id,即uid的及有效期的token;C.客户端携带token通过负载均衡后,与websocket服务器作长连接操作;D.websocket服务器通过token解析有效期及uid,对有效期内的uid进行二次处理,通过uid加多位的随机uuid,再加服务器id,形成一个新的wsuid,将该wsuid作为客户端连接id,建立缓存,同时,在缓存服务器中通过uid做key,wsuid加serverid做值进行缓存;E.当应用后台进行消息推送时,如果为群发消息,使用步骤A中已声明好的广播式交换机,及通用的群发路由键将消息推送到所有的群发的队列中;F.所有的websocket服务器都监听到该群发消息,此时将消息发送到连接到自身websocket服务器的所有客户端,完成所有用户都能收到该消息,或一个用户在不同客户端登录情况下,都能收到消息。...

【技术特征摘要】
1.基于websocket的单用户多地登录分布式推送的方法,其特征在于,包括如下步骤:A.启动websocket服务器,生成一个多位随机服务器id,使用一个指定前缀加服务器id在消息队列上声明一个队列,将该队列与事先声明好的一个发布订阅模式交换机进行绑定,绑定使用的路由键为指定前缀加服务器id,同时对刚声明的队列进行监听,另外,事先声明一个广播式交换机,声明一个群发使用的队列,所述群发使用的队列的队列名也是使用指定前缀加服务器id的方式,使用一个通用的路由键与上述广播式交换机绑定,启动websocket服务器时会同时监听该群发使用的队列;B.客户端通过应用后台进行用户登录操作,在登陆后,后台服务返回一个携带用户id,即uid的及有效期的token;C.客户端携带token通过负载均衡后,与websocket服务器作长连接操作;D.websocket服务器通过token解析有效期及uid,对有效期内的uid进行二次处理,通过uid加多位的随机uuid,再加服务器id,形成一个新的wsuid,将该wsuid作为客户端连接id,建立缓存,同时,在缓存服务器中通过uid做key,wsuid加serverid做值进行缓存;E.当应用后台进行消息推送时,如果为群发消息,使用步骤A中已声明好的广播式交换机,及通用的群发路由键将消息推...

【专利技术属性】
技术研发人员:姜韬
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1