Files
simapi-net/Synapse/EventClient.cs
T

25 lines
847 B
C#
Raw Normal View History

2023-10-20 12:33:18 +08:00
using System.Text.Json;
2024-07-26 05:03:28 +08:00
using System.Threading;
2023-10-20 12:33:18 +08:00
using Microsoft.Extensions.Logging;
2024-07-26 05:03:28 +08:00
using MQTTnet;
2023-10-23 17:39:27 +08:00
using SimApi.Helpers;
2023-10-20 12:33:18 +08:00
namespace SimApi;
public partial class Synapse
{
2024-07-26 05:03:28 +08:00
private bool FireEvent(string eventName, object param, bool retain = false)
2023-10-20 12:33:18 +08:00
{
2023-10-23 17:39:27 +08:00
var paramJson = JsonSerializer.Serialize(param, SimApiUtil.JsonOption);
2024-07-26 05:03:28 +08:00
var topic = $"{Options.SysName}/{Options.AppName}/event/{eventName}";
var message = new MqttApplicationMessageBuilder()
.WithTopic(topic)
.WithPayload(paramJson)
.WithRetainFlag(retain)
.Build();
if (!Client!.IsConnected) return false;
Client!.PublishAsync(message, CancellationToken.None).Wait();
logger.LogDebug("Event Publish: {Event}@{App} {Json}", eventName, Options.AppName, paramJson);
return true;
2023-10-20 12:33:18 +08:00
}
}