The invention discloses a real-time monitoring method and a monitoring system for a civil aircraft safety operation based on SignalR, which belong to the technical field of real-time communication and the safe operation monitoring of the civil aviation aircraft. The monitoring system comprises a ADS B ground station, SignalR server and client in three parts. The monitoring method comprises the ADS B ground station to obtain real-time aircraft flight data; real time data communication and WebGISgis has three steps. The invention uses the signalrsignalR framework for real-time communication, AJAX long polling technique compared to the traditional civil aviation, CPU and network resource consumption significantly reduced; the global single cases of SignalR were greatly reduced memory usage by the IuserIdProvider server; in extension and into the session, remove SignalR connection dependence on ConnectionId, the the connection can be directly related to user information; through the distributed computing and load balancing optimization service performance, the system can support a large number of concurrent users operation.
【技术实现步骤摘要】
一种基于SignalR的民用飞机安全运行实时监测方法及监测系统
本专利技术属于实时通信和民航飞机安全运行监测
,具体涉及一种基于SignalR的民用飞机安全运行实时监测方法。
技术介绍
传统的民航飞机运行实时监测采用ajax长轮询(longpolling)技术,由客户端按照固定间隔不断向服务器请求数据来达到伪实时通信效果,无法做到服务器直接向客户端推送数据,消耗CPU和网络资源大。SignalR是一种高效便捷的全双工(full-duplex)通信框架,能够建立基于websocket的异步、永久连接,适合航空安全运行实时监测。然而SignalR进行高频实时通信时有以下缺点:SignalR使用集线器类(Hub)API来处理服务器到客户端的交互。由于每一次连接都会新建一个Hub实例,因此数据存储、转发、广播等更新机制的实现需要放在另一个单例化、全局性的上下文中,否则在高并发访问下内存中会有大量冗余Hub实例存在,影响系统性能。SignalR的推送消息是基于连接(Connection)的,SignalR会为每个会话自动生成一个随机新建的ConnectionId,当客户端刷新之后connectionId也随之刷新。但是运行监控系统的消息推送是基于用户的(权限体系),也就是只有登录之后才注册到此Hub,因此需要对SignalR的连接方式进行扩展,使之可以进行基于用户的数据推送。SignalR为客户端-服务器模式,当同时维护的连接数较多时,服务器性能会显著下降,需要进行分布式运算和负载均衡,使得系统能够支持大量用户并发操作。
技术实现思路
本专利技术为了解决现有技术中 ...
【技术保护点】
一种基于SignalR的民用飞机安全运行实时监测方法,其特征在于:所述的监测方法包括如下步骤,第一步,ADS‑B地面站获取飞机实时飞行数据;第二步,实时数据通信,具体如下:(2.1)SignalR全局、单例化实现;首先创建ServerTickerHub类继承Hub类,用以重写Hub类的连接建立、连接断开基本事件;然后创建ServerTicker类承担数据更新逻辑,同时采用单例模式创建ServerTicker实例确保内存中只有一个ServerTicker实例存在,再从每个ServerTickerHub类中添加对ServerTicker单一实例的引用,最后为ServerTicker类添加SignalR全局集线器连接上下文对象的引用,使得ServerTicker能够对客户端1~N进行广播;(2.2)扩展SignalR IUserIdProvider并注入会话;创建一个MyUserFactory类,继承自IUserIdProvider,实现IUserIdProvider的抽象方法GetUserId,并从浏览器Cookies中获取用户Id;在Starup.cs文件中,将自定义的MyUserFac ...
【技术特征摘要】
1.一种基于SignalR的民用飞机安全运行实时监测方法,其特征在于:所述的监测方法包括如下步骤,第一步,ADS-B地面站获取飞机实时飞行数据;第二步,实时数据通信,具体如下:(2.1)SignalR全局、单例化实现;首先创建ServerTickerHub类继承Hub类,用以重写Hub类的连接建立、连接断开基本事件;然后创建ServerTicker类承担数据更新逻辑,同时采用单例模式创建ServerTicker实例确保内存中只有一个ServerTicker实例存在,再从每个ServerTickerHub类中添加对ServerTicker单一实例的引用,最后为ServerTicker类添加SignalR全局集线器连接上下文对象的引用,使得ServerTicker能够对客户端1~N进行广播;(2.2)扩展SignalRIUserIdProvider并注入会话;创建一个MyUserFactory类,继承自IUserIdProvider,实现IUserIdProvider的抽象方法GetUserId,并从浏览器Cookies中获取用户Id;在Starup.cs文件中,将自定义的MyUserFactory类注入到会话设置中,解除SignalR连接对ConnectionId的依赖,使得每一个连接直接与当前登录的用户关联;(2.3)基于redis的SignalR分布式服务及负载均衡;第三步,WebGISgis呈现:客户端以OpenLayers3为GIS框架进行飞机实时状态呈现,将飞机作为点状要素展在遥感影像底图上;当客户端接收到飞机实时飞行数据后,将新的实时信息和坐标赋予飞机要素,同时调用P...
【专利技术属性】
技术研发人员:孙华波,舒平,陆子龙,吴磊,陈啸,卢秋阳,
申请(专利权)人:中国民航科学技术研究院,广州市绯影信息科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。