一种精简的分布式长连接的数据传输方法及系统技术方案

技术编号:29304796 阅读:65 留言:0更新日期:2021-07-17 01:43
本发明专利技术提供了精简的分布式长连接的数据传输方法及系统,该方法包括如下步骤:步骤1:约定长连接客户端和服务器端数据格式,包括消息类型;步骤2:客户端通过长连接连接到服务器后,后端服务器维护长连接用户在线列表;步骤3:增加消息队列rabbitmq,用来对接消息的发送端和接收端;步骤4:客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户;步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发。本发明专利技术的有益效果是:可以很方便对长连接模块进行改造,快速实现扩展。快速实现扩展。快速实现扩展。

A simplified distributed long connection data transmission method and system

【技术实现步骤摘要】
一种精简的分布式长连接的数据传输方法及系统


[0001]本专利技术涉及数据通信
,尤其涉及一种精简的分布式长连接的数据传输方法及系统。

技术介绍

[0002]在客户端和服务器的数据传输过程中,长连接是必不可少的。通过建立的长连接,服务器可以很方便将消息下发给各个客户端。
[0003]HTTP的分布式比较好实现,可以通过Redis实现连接共享,用nginx进行反向代理,但长连接部分的消息转发,如果用多个节点来实现,消息可能会被多次发送。

技术实现思路

[0004]本专利技术提供了一种精简的分布式长连接的数据传输方法,包括如下步骤:
[0005]步骤1:约定长连接客户端和服务器端数据格式,包括消息的类型。
[0006]步骤2:客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表。
[0007]步骤3:增加一个消息队列rabbitmq,用来对接消息的发送端和接收端。
[0008]步骤4:客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户。
[0009]步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
[0010]作为本专利技术的进一步改进,在所述步骤1中,消息的类型包括单条消息、房间消息和广播消息三种类型;在所述步骤2中,后端服务器维护一个长连接用户在线用户列表,该列表用redis进行存储。
[0011]作为本专利技术的进一步改进,在所述步骤3中,具体还包括:
[0012]步骤S1:配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器。
[0013]步骤S2:长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。
[0014]作为本专利技术的进一步改进,在所述步骤5中,各长连接实际业务处理模块,按单条消息、房间消息和广播消息的规则进行路由转发。
[0015]作为本专利技术的进一步改进,在所述步骤5中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回步骤4,否则直接返回步骤4;
[0016]在所述步骤5中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回步骤4。
[0017]在所述步骤5中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回步骤4。
[0018]本专利技术的有益效果是:1.本专利技术的精简的分布式长连接的数据传输方法可以很方便对长连接模块进行改造,快速实现扩展;2.本专利技术的精简的分布式长连接的数据传输方法可以很方便将长连接的业务压力进行负载均衡,动态扩展。
附图说明
[0019]图1是本专利技术数据传输方法的流程图。
具体实施方式
[0020]如图1所示,本专利技术公开了一种精简的分布式长连接的数据传输方法,包括如下步骤:
[0021]步骤1:约定长连接客户端和服务器端数据格式,包括消息的类型:单条、房间和广播。即把消息进行分类,分成单条、房间和广播三种类型,在原来的消息基础上,按业务要求加上对应的类型。
[0022]步骤2:客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表,该列表用redis进行存储。(备注:redis是缓存服务器的一种)
[0023]步骤3:增加一个消息队列rabbitmq,用来对接消息的发送端和接收端。(备注:rabbitmq是消息队列的一种)
[0024]在所述步骤3中,具体还包括:
[0025]步骤S1:配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器。
[0026]步骤S2:长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。
[0027]步骤4:客户端发送的消息,通过nginx(反向代理服务器)到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户。
[0028]步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按单条、房间和广播消息的规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
[0029]在所述步骤5中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回步骤4,否则直接返回步骤4。
[0030]在所述步骤5中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回步骤4。
[0031]在所述步骤5中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回步骤4。
[0032]在步骤2中,客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表,该列表用redis进行存储,通过增加用户在线列表的维护,把原来对外的长连接端口,用支持stream反向代理的nginx进行负载均衡。
[0033]本专利技术还公开了一种精简的分布式长连接的数据传输系统,包括:
[0034]数据格式单元:用于约定长连接客户端和服务器端数据格式,包括消息的类型。
[0035]在线列表模单元:用于客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表。
[0036]消息队列单元:用于增加一个消息队列rabbitmq,用来对接消息的发送端和接收端。
[0037]长连接实际处理单元:用于将客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户。
[0038]后端业务处理单元:用于后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。
[0039]在所述数据格式单元中,消息的类型包括单条消息、房间消息和广播消息三种类型;在所述在线列表模单元中,后端服务器维护一个长连接用户在线用户列表,该列表用redis进行存储。
[0040]在所述消息队列单元中,具体还包括:
[0041]配置模块:用于配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器。
[0042]对接模块:用于长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种精简的分布式长连接的数据传输方法,其特征在于,包括如下步骤:步骤1:约定长连接客户端和服务器端数据格式,包括消息的类型;步骤2:客户端通过长连接连接到服务器后,后端服务器维护一个长连接用户在线列表;步骤3:增加一个消息队列rabbitmq,用来对接消息的发送端和接收端;步骤4:客户端发送的消息,通过nginx到长连接实际处理模块,长连接实际处理模块按业务处理完成后,直接返回给前端用户;步骤5:后端业务处理模块要发消息给用户时,先判断用户是否在线,如果用户在线,就将消息发到消息队列,由各长连接实际业务处理模块按规则进行路由转发,如果用户不在线,需要离线缓存的消息,用缓存进行存储,用数据库进行持久化;然后继续执行步骤4,完成数据发送和接受过程。2.根据权利要求1所述的数据传输方法,其特征在于,在所述步骤1中,消息的类型包括单条消息、房间消息和广播消息三种类型;在所述步骤2中,后端服务器维护一个长连接用户在线用户列表,该列表用redis进行存储。3.根据权利要求1所述的数据传输方法,其特征在于,在所述步骤3中,具体还包括:步骤S1:配置好rabbitmq对应的消息队列名称、账号、密码和相应的路由器;步骤S2:长连接模块连接rabbitmq路由器的接收端,并维持一个本节点的在线用户列表,后端业务模块连接到rabbitmq的发送端。4.根据权利要求2所述的数据传输方法,其特征在于,在所述步骤5中,各长连接实际业务处理模块,按单条消息、房间消息和广播消息的规则进行路由转发。5.根据权利要求4所述的数据传输方法,其特征在于,在所述步骤5中,按单条消息进行路由转发时,各长连接实际处理模块在线列表会判断该用户是否存在,如果是,则发送该消息,然后返回步骤4,否则直接返回步骤4;在所述步骤5中,按房间消息进行路由转发时,向本节点该房间所有用户发送消息,然后返回步骤4;在所述步骤5中,按广播消息进行路由转发时,向本节点所有用户发送消息,然后返回步骤4。6.一种精简的分布式长连接的数据传输系统,包括:数据格式单元:用于约定长连接客户端和服务器端数...

【专利技术属性】
技术研发人员:周聪伟张友明刘金锋
申请(专利权)人:深圳市乐唯科技开发有限公司
类型:发明
国别省市:

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

1