diff --git a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
index e349147c..d6f747bb 100644
--- a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
+++ b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
@@ -20,9 +20,9 @@
-
-
-
+
+
+
@@ -40,7 +40,7 @@
-
+
diff --git a/Admin.NET/Admin.NET.Core/Mqtt/MqttHostedService.cs b/Admin.NET/Admin.NET.Core/Job/MqttHostedService.cs
similarity index 98%
rename from Admin.NET/Admin.NET.Core/Mqtt/MqttHostedService.cs
rename to Admin.NET/Admin.NET.Core/Job/MqttHostedService.cs
index 2fc64a1d..1e0e76d4 100644
--- a/Admin.NET/Admin.NET.Core/Mqtt/MqttHostedService.cs
+++ b/Admin.NET/Admin.NET.Core/Job/MqttHostedService.cs
@@ -17,7 +17,7 @@ using System.Threading.Tasks;
///
/// MQTT 服务
///
-public class MqttHostedService(IOptions mqttOptions, ISqlSugarClient db) : IHostedService, IDisposable
+public class MqttHostedService(IOptions mqttOptions, ISqlSugarClient db) : IHostedService, ITransient
{
private const string ServerClientId = "Admin.NET.MQTT";
public MqttServer MqttServer { get; set; }
@@ -181,9 +181,4 @@ public class MqttHostedService(IOptions mqttOptions, ISqlSugarClien
{
return Task.CompletedTask;
}
-
- public void Dispose()
- {
- throw new NotImplementedException();
- }
}
\ No newline at end of file
diff --git a/Admin.NET/Admin.NET.Core/Service/Mqtt/SysMqttService.cs b/Admin.NET/Admin.NET.Core/Service/Mqtt/SysMqttService.cs
new file mode 100644
index 00000000..7f054256
--- /dev/null
+++ b/Admin.NET/Admin.NET.Core/Service/Mqtt/SysMqttService.cs
@@ -0,0 +1,31 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+using MQTTnet.Server;
+
+namespace Admin.NET.Core.Service;
+
+///
+/// 系统 MQTT 服务 🧩
+///
+[ApiDescriptionSettings(Order = 90, Description = "MQTT 服务")]
+public class SysMqttService(MqttHostedService mqttHostedService) : IDynamicApiController, ITransient
+{
+ private readonly MqttHostedService _mqttHostedService = mqttHostedService;
+
+ ///
+ /// 获取客户端列表 🔖
+ ///
+ ///
+ [DisplayName("获取客户端列表")]
+ public async Task> GetClients()
+ {
+ if (_mqttHostedService.MqttServer == null)
+ throw Oops.Oh("【MQTT】服务未启动");
+
+ return await _mqttHostedService.MqttServer.GetClientsAsync();
+ }
+}
\ No newline at end of file
diff --git a/Web/src/views/system/job/component/JobScriptCode.ts b/Web/src/views/system/job/component/JobScriptCode.ts
index 344f3021..b83eb832 100644
--- a/Web/src/views/system/job/component/JobScriptCode.ts
+++ b/Web/src/views/system/job/component/JobScriptCode.ts
@@ -7,8 +7,8 @@ export const JobScriptCode = `// Admin.NET 项目的版权、商标、专利和
#region using
using Furion;
+using Furion.HttpRemote;
using Furion.Logging;
-using Furion.RemoteRequest.Extensions;
using Furion.Schedule;
using Microsoft.Extensions.DependencyInjection;
using System;
@@ -45,7 +45,9 @@ public class DynamicJob : IJob
// var rep = serviceScope.ServiceProvider.GetService>();
// 请求网址
- // var result = await "http://www.baidu.com".GetAsStringAsync();
+ // var url = "http://www.baidu.com";
+ // var httpRemoteService = App.GetRequiredService();
+ // var result = await httpRemoteService.GetAsStringAsync(url);
// Console.WriteLine(result);
// 日志