You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.7 KiB
C#
69 lines
2.7 KiB
C#
using Infrastructure.Cache;
|
|
using OpenAuth.App.ServiceApp;
|
|
using OpenAuth.WebApi;
|
|
using Quartz;
|
|
|
|
namespace OpenAuth.App.BaseApp.Subscribe;
|
|
|
|
/// <summary>
|
|
/// 离线去订阅
|
|
/// </summary>
|
|
public class GlobalSubscribe : IJob
|
|
{
|
|
public bool x = true; // 临时只执行一次
|
|
public ManageApp manageApp;
|
|
private MqttClientManager mqttManager;
|
|
private RedisCacheContext redisCacheContext;
|
|
|
|
public GlobalSubscribe(ManageApp manageApp, MqttClientManager mqttManager, ICacheContext redisCacheContext)
|
|
{
|
|
this.manageApp = manageApp;
|
|
this.mqttManager = mqttManager;
|
|
this.redisCacheContext = redisCacheContext as RedisCacheContext;
|
|
}
|
|
|
|
public Task Execute(IJobExecutionContext context)
|
|
{
|
|
Console.WriteLine($"running !{DateTime.Now}");
|
|
/*var redisCacheContext = context.JobDetail.JobDataMap.Get("redisCacheContext") as RedisCacheContext;
|
|
var serviceProvider = context.JobDetail.JobDataMap.Get("ServiceProvider") as IServiceProvider;
|
|
var mqttManager = serviceProvider.GetService(typeof(MqttClientManager)) as MqttClientManager;
|
|
if (manageApp == null)
|
|
{
|
|
manageApp = serviceProvider.GetService(typeof(ManageApp)) as ManageApp;
|
|
}
|
|
/*var ioc = IocManager.Instance;
|
|
var redisCacheContext = IocManager.Instance.GetService<ICacheContext>();#1#
|
|
// todo 如果无人机不在线,则订阅
|
|
if (redisCacheContext == null) return Task.CompletedTask;*/
|
|
var keys = redisCacheContext.GetAllKeys("online:*");
|
|
foreach (var redisKey in keys)
|
|
{
|
|
var gatewaySn = redisKey.ToString()[7..];
|
|
// todo 取得sn值
|
|
// todo 取得设备信息
|
|
// todo 需要判断是不是要订阅,避免重复订阅
|
|
if (mqttManager != null)
|
|
{
|
|
var droneDock = manageApp.GetDroneDockBySn(gatewaySn);
|
|
/*if(droneDock)
|
|
|
|
/*mqttManager.SubscribeAsync($"thing/product/{gatewaySn}/services_reply",
|
|
async (args) => await TopicHandler.HandleTopic(gatewaySn, args.ApplicationMessage.Topic,
|
|
Encoding.UTF8.GetString(args.ApplicationMessage.Payload), serviceProvider));#1#
|
|
x = false;
|
|
*/
|
|
}
|
|
//statusSubscribe.subscribe(gateway);
|
|
//stateSubscribe.subscribe(gateway, true);
|
|
//osdSubscribe.subscribe(gateway, true);
|
|
//servicesSubscribe.subscribe(gateway);
|
|
//eventsSubscribe.subscribe(gateway, true);
|
|
//requestsSubscribe.subscribe(gateway);
|
|
//propertySetSubscribe.subscribe(gateway);
|
|
}
|
|
|
|
// todo
|
|
return Task.CompletedTask;
|
|
}
|
|
} |