公开/公告号CN103873564A
专利类型发明专利
公开/公告日2014-06-18
原文格式PDF
申请/专利权人 浪潮集团山东通用软件有限公司;
申请/专利号CN201410070381.0
发明设计人 董亮;
申请日2014-02-28
分类号H04L29/08;G06F17/30;
代理机构
代理人
地址 250101 山东省济南市高新区舜雅路1036号
入库时间 2023-12-17 00:25:44
法律状态公告日
法律状态信息
法律状态
2018-09-25
授权
授权
2018-08-28
著录事项变更 IPC(主分类):H04L29/08 变更前: 变更后: 申请日:20140228
著录事项变更
2015-11-04
实质审查的生效 IPC(主分类):H04L29/08 申请日:20140228
实质审查的生效
2014-06-18
公开
公开
技术领域
本发明属于Web应用服务端和客户端双工通信技术领域,涉及一种在多服务器负载均衡条件下实现SignalR双工通信的方法。
背景技术
常规的客户端浏览器和应用服务器之间的通信采用Request/Response模型,在这种模型中,应用服务器只能够响应客户端请求,而不能主动的向客户端发送数据。
微软提供的SignalR通信服务解决了这个问题,它在客户端浏览器和Web服务器之间建立了一条双工通信通道,它的编程接口支持客户端和服务端主动向对方发送数据。理论上,通过Web服务器路由,SignalR通信服务可以实现两个客户端浏览器的实时通信服务。
在多服务器负载均衡条件下,两个客户端使用SignalR通信服务进行实时通信,两个客户端可能和两台不同的服务器建立起双工通信通道,此时SignalR通信服务是不能正确进行消息路由的。SignalR通信服务内置了负载均衡时的解决方案,但这个解决方案绑定了Sql Server数据库,如果在生产环境中不采用Sql Server数据库,该方案无法工作。
故,针对上述现有技术存在的缺陷,有必要开发研究,以提供一种方案,以实现在多服务器负载均衡条件下,基于多种类型数据库,SignalR通信服务能够正常工作。
发明内容
为解决上述问题,本发明的目的在于提供一种在多服务器负载均衡条件下实现SignalR双工通信的方法。
为实现上述目的,本发明的技术方案为:
一种在多服务器负载均衡条件下实现SignalR双工通信的方法,包括如下步骤:
步骤一、定义SignalR通信服务相关数据表;
步骤二、定义SignalR通信服务端与SignalR通信客户端;
步骤三、定义SignalR通信服务管理器。
进一步地,在步骤一中,所述数据表为SignalR用户连接信息表、SignalR消息信息表以及SignalR消息发送状态表。
进一步地,步骤一具体包括:
在数据库中创建SignalR用户连接信息表,所述SignalR用户连接信息表用于描述双工通信的连接标识、用户标识和双工通信服务器映射关系,数据列包括有用户ID、用户名、连接ID、服务器ID;
在数据库中创建SignalR消息信息表,所述SignalR消息信息表用于描述通过SignalR双工通信发送的消息基本信息,数据列包括有发送人ID、消息标题、消息内容、优先级、类型、创建时间;
在数据库中创建SignalR消息发送状态表,所述SignalR消息发送状态表用于描述消息的发送状态,数据列包括有发送服务器ID、接收人ID、消息ID、发送状态、发送时间。
进一步地,步骤二具体包括:
定义Connect方法,在Connect方法中更新SignalR用户连接信息数据表;
定义DisConnect事件,在DisConnect事件中更新SignalR用户连接信息数据表;
SignalR通信服务端实现供业务逻辑调用的通信编程接口,包括向所有在线用户发送消息和向指定接收人发送消息。
进一步地,在步骤三中,通过Web应用程序定义定时器对象,定时在数据库中搜索未发消息,消息接收者包含在已连接在本服务器上的用户列表中;应用程序搜索到可发消息时,使用SignalR通信通道主动将消息推动到客户端,并更改消息发送状态。
相较于现有技术,本发明一种在多服务器负载均衡条件下实现SignalR双工通信的方法基于SignalR技术实现的双工通信能够在多服务器负载均衡环境下正常工作,并且支持多种类型数据库。
附图说明
图1是本发明的流程图示。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明一种在多服务器负载均衡条件下实现SignalR双工通信的方法,包括如下步骤:
步骤一、定义SignalR通信服务相关数据表
所述数据表为SignalR用户连接信息表、SignalR消息信息表以及SignalR消息发送状态表;具体地,步骤一中包括有:
在数据库中创建SignalR用户连接信息表,所述SignalR用户连接信息表用于描述双工通信的连接标识、用户标识和双工通信服务器映射关系,数据列包括有用户ID、用户名、连接ID、服务器ID。
在数据库中创建SignalR消息信息表,所述SignalR消息信息表用于描述通过SignalR双工通信发送的消息基本信息,数据列包括有发送人ID、消息标题、消息内容、优先级、类型、创建时间。
在数据库中创建SignalR消息发送状态表,所述SignalR消息发送状态表用于描述消息的发送状态,数据列包括有发送服务器ID、接收人ID、消息ID、发送状态、发送时间。
步骤二、定义SignalR通信服务端与SignalR通信客户端
定义Connect方法,在Connect方法中更新SignalR用户连接信息数据表。
定义DisConnect事件,在DisConnect事件中更新SignalR用户连接信息数据表。
SignalR通信服务端实现供业务逻辑调用的通信编程接口,包括向所有在线用户发送消息和向指定接收人发送消息;而客户端使用javascript函数监听浏览器Dom对象加载、刷新、关闭事件,在事件发生时相应调用服务端的Connect和DisConnect事件维护SignalR用户连接信息数据表。同时,客户端使用javascript函数定义通信编程接口,包括客户端发送消息和客户端接收到消息后的处理函数。
步骤三、定义SignalR通信服务管理器
其中,Web应用程序定义定时器对象,定时在数据库中搜索未发消息,消息接收者包含在已连接在本服务器上的用户列表中。应用程序搜索到可发消息时,使用SignalR通信通道主动将消息推动到客户端,并更改消息发送状态。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 用于生成代码的方法。一种允许在授权系统中实现的用于授权交易的授权方法,该授权系统包括以下实体:客户。第一服务器和第二服务器,与第一服务器通信,并且与第一服务器通信。客户端,应用程序和处理器可以读取的方式。
机译: 提供一种UE,BM-SC,状态管理服务器,负载均衡服务器和文件修复服务器以及其中的相应方法,用于文件修复过程
机译: 建立双向服务器到服务器通信的方法和服务器场负载均衡设备及其计算机程序