SignalR事件
盒子状态变更事件
实时数据推送事件 报警触发推送 报警还原推送
此事件触发条件:
1、signalr刚连上时,此事件触发。或盒子的状态有变化后。(状态代表盒子与服务器的连接状态)
此事件触发条件:
1、收到盒子上线事件后,必须调用开点。
2、监控点数据发生变化。或监控点状态发生变化。(状态表示盒子与PLC之间通讯的状态)
此事件触发条件:
1、当报警条目数据触发报警条件时,服务器推送消息。
注意:若报警条件持续满足,只会推送第一次触发报警的消息。
此事件触发条件:
1、当报警条目数据还原时,服务器推送消息。
SignalR Demo
C# Demo
VS版本需要15.3及以上,C# demo是.net core程序,Nuget引入的依赖包在demo中的nuget文件夹下,framework项目使用dll需要4.6及以上的版本。
java Demo
java demo包含Gradle与maven工程,需要java8,signalr的jar包在repos文件夹下。
1、填写Global.java文件的参数后
2、查看README文件
3、编译后运行jar
注意:
demo均已处理好signalr重连与token过期刷新token的问题。
如不使用demo,需要自行处理signalr断开后的重连问题。每个用户全局只需建立一次signalr实例(单例)
需要自行处理token过期即接口返回401。根据refresh_token调重新登录接口刷新access_token后重试接口
开点接口中Header下的X-FBox-ClientId要与连接signalr的X-FBox-ClientId一致,每次启动程序guid需要新生成
siganlr断线后,某些盒子的数据不推送了
signalr每次重连或盒子掉线了上线后,均需要调开点。建立signalr连接的X-FBox-ClientId与开点接口的X-FBox-ClientId要一致
接口可能会失败或异常,保存下日志,程序需要处理开点接口异常后重试机制,直至该接口调用成功。
siganlr推送的频率太高
SignalR推送是变化推送,PLC数据发生变化,FBox上报服务器,可以通过给监控点设置死值区、省流量模式调节下。
siganlr推送数据与FlexManager显示有差异
FlexManager配置了小数位或者数值运算,推送的数据不对盒子上报的数据进行处理。如需接收推送处理的数据,可通过FlexManager的边缘计算处理
多个FBox,怎么接收数据
signalr实例要保持长连接,程序中是单例的。推送当前整个FlexManager账号的数据,只需要侦听实时数据推送事件并对在线的盒子调用开点接口。