C# .CORE 5 Web Api和客户端MQTT
是否可以创建.core webapi项目和mqtt客户机?C# .CORE 5 Web Api和客户端MQTT,c#,mqtt,webapi,C#,Mqtt,Webapi,是否可以创建.core webapi项目和mqtt客户机? 例如,在startup.cs中创建一个单独的线程,您可以在其中实例化mqtt客户机。我尝试在startup.cs中添加一个单例服务来实例化mqtt客户机,它工作正常,程序接收到主题上发布的消息。 第一个问题,在此位置创建此服务是否正确 问题是当我尝试使用包控制台工具添加数据库的迁移或更新时。 该命令未完成排序,控制台被锁定 public void ConfigureServices(IServiceCollection
例如,在startup.cs中创建一个单独的线程,您可以在其中实例化mqtt客户机。我尝试在startup.cs中添加一个单例服务来实例化mqtt客户机,它工作正常,程序接收到主题上发布的消息。 第一个问题,在此位置创建此服务是否正确 问题是当我尝试使用包控制台工具添加数据库的迁移或更新时。 该命令未完成排序,控制台被锁定
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));
services.AddSingleton<MyMqtt>(new MyMqtt());
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "CoWorkOfficeWebApi", Version = "v1" });
});
}
必须先启动服务器,然后才能启动客户端。因此,您希望在API启动后启动客户机。您尝试了哪些,哪些不起作用?
public class MyMqtt
{
MqttClient client;
public MyMqtt()
{
// create client instance
client = new MqttClient("127.0.0.1");
// register to message received
client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
string clientId = Guid.NewGuid().ToString();
client.Connect(clientId);
// subscribe to the topic "/home/temperature" with QoS 2
client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
}
static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
string msg = Encoding.UTF8.GetString(e.Message);
Console.WriteLine($"Topic: {e.Topic}, Message: {msg}");
}
}