fix synapse use mqtt
This commit is contained in:
+13
-19
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user