System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及消息推送,尤其是一种基于websocket的消息推送方法、系统、装置及存储介质。
技术介绍
1、单台websocket服务器的服务能力有限,若服务实例宕机,需要有其他服务实例接替其工作。同时运行多个websocket服务实例,不同用户可能连接到不同的服务实例上,当其中一个服务实例处理完数据后需要推送消息到某个客户端时,可能客户端连接的并不是该服务实例,这就涉及到消息路由的问题,以下为跨服务实例消息推送的场景:
2、1)对于广播消息,服务实例a需要推送消息到所有服务实例上的所有客户端;
3、2)对于组播消息,服务实例a需要推送消息到其他属于该组的连接到其他服务器上的客户端;
4、3)对于单播消息,服务实例a需要推送到服务实例b的某个客户端。
5、常规websocket为单方向消息推送方式,即客户端发送消息到服务端,或服务端推送消息到客户端,在面对跨服务实例消息推送的场景时,现有的基于websocket的消息推送方法存在效率低下的问题,影响了服务器的可用性和稳定性。
技术实现思路
1、本专利技术的目的在于至少一定程度上解决现有技术中存在的技术问题之一。
2、为此,本专利技术实施例的一个目的在于提供一种基于websocket的消息推送方法,该方法提高了跨服务实例消息推送场景下的消息推送效率,从而提高了服务器的可用性和稳定性。
3、本专利技术实施例的另一个目的在于提供一种基于websocket的消息推送系
4、为了达到上述技术目的,本专利技术实施例所采取的技术方案包括:
5、第一方面,本专利技术实施例提供了一种基于websocket的消息推送方法,包括以下步骤:
6、通过客户端向服务端发起websocket连接请求,使得所述服务端进行websocket握手处理并建立服务实例与所述客户端的websocket连接;
7、响应于当前服务实例的单人消息推送请求,根据目标用户的第一连接信息确定第一客户端,进而通过所述服务端向所述第一客户端推送单人消息;
8、响应于所述当前服务实例的组播消息推送请求,根据目标用户组的第二连接信息确定连接至所述当前服务实例的第二客户端以及连接至其他服务实例的第三客户端,进而通过所述服务端向所述第二客户端和所述第三客户端推送组播消息;
9、响应于所述当前服务实例的广播消息推送请求,根据所述当前服务实例的第三连接信息确定连接至所述当前服务实例的第四客户端,并根据所述其他服务实例的第四连接信息确定连接至所述其他服务实例的第五客户端,进而通过所述服务端向所述第四客户端和所述第五客户端推送广播消息。
10、进一步地,在本专利技术的一个实施例中,所述消息推送方法还包括以下步骤:
11、通过所述客户端向所述服务实例发送心跳包,使得所述服务实例根据所述心跳包生成心跳响应包,进而将所述心跳响应包返回至所述客户端。
12、进一步地,在本专利技术的一个实施例中,所述消息推送方法还包括以下步骤:
13、当所述服务实例在预设的时间周期内未接收到所述客户端发送的所述心跳包,确定对应的所述websocket连接为闲置websocket连接,进而对所述闲置websocket连接进行清理。
14、进一步地,在本专利技术的一个实施例中,所述消息推送方法还包括以下步骤:
15、通过所述客户端向所述服务实例发送业务消息,使得所述服务实例对所述业务消息进行解析和业务处理,进而根据业务处理结果生成消息响应包,并将所述消息响应包返回至所述客户端。
16、进一步地,在本专利技术的一个实施例中,所述根据目标用户的第一连接信息确定第一客户端,进而通过所述服务端向所述第一客户端推送单人消息,其具体包括:
17、通过所述当前服务实例的websocketholder调用websocketconnectionservice的getweb socketonlineuser方法,获取所述第一连接信息;
18、根据所述第一连接信息确定所述第一客户端以及与所述第一客户端进行websocket连接的若干个目标服务实例;
19、当所述目标服务实例为所述当前服务实例,通过所述当前服务实例的websocketholder调用websocketconnectionactor的消息推送策略向所述第一客户端推送所述单人消息;
20、当所述目标服务实例为所述其他服务实例,通过redis向所述目标服务实例发送单人消息推送事件,使得所述目标服务实例的websocketholder调用websocketconnectionactor的消息推送策略向所述第一客户端推送所述单人消息。
21、进一步地,在本专利技术的一个实施例中,所述第二连接信息包括所述目标用户组与所述当前服务实例的第五连接信息以及所述目标用户组与所述其他服务实例的第六连接信息,所述根据目标用户组的第二连接信息确定连接至所述当前服务实例的第二客户端以及连接至其他服务实例的第三客户端,进而通过所述服务端向所述第二客户端和所述第三客户端推送组播消息,其具体包括:
22、通过所述当前服务实例的websocketholder调用tagstoconnectionids获取所述第五连接信息;
23、根据所述第五连接信息确定连接至所述当前服务实例的若干个第二客户端,进而通过所述当前服务实例的websocketholder调用websocketconnectionactor的消息推送策略向所述第二客户端推送所述组播消息;
24、通过redis向所述其他服务实例发送组播消息推送事件,使得所述其他服务实例的web socketholder调用tagstoconnectionids获取所述第六连接信息;
25、根据所述第六连接信息确定连接至所述其他服务实例的若干个第三客户端,进而通过所述其他服务实例的websocketholder调用websocketconnectionactor的消息推送策略向所述第三客户端推送所述组播消息。
26、进一步地,在本专利技术的一个实施例中,所述根据当前服务实例的第三连接信息确定连接至所述当前服务实例的第四客户端,并根据所述其他服务实例的第四连接信息确定连接至所述其他服务实例的第五客户端,进而通过所述服务端向所述第四客户端和所述第五客户端推送广播消息,其具体包括:
27、通过所述当前服务实例的websocketholder调用websocketconnectionactormap获取所述第三连接信息;
28、根据所述第三连接信息确定连接至所述当前服务实例的若干个第四客户端,进而通过所述当前服务实例的websocketholder调用websocketconnectionactor的消息推送策略向所述第四客户端推送所述广播消息;
29、通过redis向所述其他服务实例发本文档来自技高网...
【技术保护点】
1.一种基于WebSocket的消息推送方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于WebSocket的消息推送方法,其特征在于,所述消息推送方法还包括以下步骤:
3.根据权利要求2所述的一种基于WebSocket的消息推送方法,其特征在于,所述消息推送方法还包括以下步骤:
4.根据权利要求1所述的一种基于WebSocket的消息推送方法,其特征在于,所述消息推送方法还包括以下步骤:
5.根据权利要求1所述的一种基于WebSocket的消息推送方法,其特征在于,所述根据目标用户的第一连接信息确定第一客户端,进而通过所述服务端向所述第一客户端推送单人消息,其具体包括:
6.根据权利要求1所述的一种基于WebSocket的消息推送方法,其特征在于,所述第二连接信息包括所述目标用户组与所述当前服务实例的第五连接信息以及所述目标用户组与所述其他服务实例的第六连接信息,所述根据目标用户组的第二连接信息确定连接至所述当前服务实例的第二客户端以及连接至其他服务实例的第三客户端,进而通过所述服务端向所述第二客户端和
7.根据权利要求1所述的一种基于WebSocket的消息推送方法,其特征在于,所述根据当前服务实例的第三连接信息确定连接至所述当前服务实例的第四客户端,并根据所述其他服务实例的第四连接信息确定连接至所述其他服务实例的第五客户端,进而通过所述服务端向所述第四客户端和所述第五客户端推送广播消息,其具体包括:
8.一种基于WebSocket的消息推送系统,其特征在于,包括:
9.一种基于WebSocket的消息推送装置,其特征在于,包括:
10.一种计算机可读存储介质,其中存储有处理器可执行的程序,其特征在于,所述处理器可执行的程序在由处理器执行时用于执行如权利要求1至7中任一项所述的一种基于WebSocket的消息推送方法。
...【技术特征摘要】
1.一种基于websocket的消息推送方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于websocket的消息推送方法,其特征在于,所述消息推送方法还包括以下步骤:
3.根据权利要求2所述的一种基于websocket的消息推送方法,其特征在于,所述消息推送方法还包括以下步骤:
4.根据权利要求1所述的一种基于websocket的消息推送方法,其特征在于,所述消息推送方法还包括以下步骤:
5.根据权利要求1所述的一种基于websocket的消息推送方法,其特征在于,所述根据目标用户的第一连接信息确定第一客户端,进而通过所述服务端向所述第一客户端推送单人消息,其具体包括:
6.根据权利要求1所述的一种基于websocket的消息推送方法,其特征在于,所述第二连接信息包括所述目标用户组与所述当前服务实例的第五连接信息以及所述目标用户组与所述其他服务实例的第六连接信息,所述...
【专利技术属性】
技术研发人员:黄东华,
申请(专利权)人:广州鲸旗网络科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。