fix synapse use mqtt

This commit is contained in:
2024-07-26 05:03:28 +08:00
parent 56b0490d1e
commit f4bc6dc080
8 changed files with 221 additions and 249 deletions
+13 -19
View File
@@ -1,31 +1,25 @@
using System;
using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;
using System.Threading;
using Microsoft.Extensions.Logging;
using MQTTnet;
using SimApi.Helpers;
namespace SimApi;
public partial class Synapse
{
private void RunEventClient()
{
EventClientChannel = CreateChannel(0, "EventClient");
}
private void FireEvent(string eventName, object param)
private bool FireEvent(string eventName, object param, bool retain = false)
{
var paramJson = JsonSerializer.Serialize(param, SimApiUtil.JsonOption);
var router = $"event.{Options.AppName}.{eventName}";
var props = EventClientChannel.CreateBasicProperties();
props.AppId = Options.AppId;
props.MessageId = Guid.NewGuid().ToString();
props.ReplyTo = Options.AppName;
props.Type = eventName;
EventClientChannel.BasicPublish(Options.SysName, router, false, props, Encoding.UTF8.GetBytes(paramJson));
Logger.LogDebug("Event Publish: {OptionsAppName}.{EventName}\n{ParamJson}", Options.AppName, eventName,
paramJson);
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;
}
}