栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

使用MQTTnet开发MQTT服务-.NET Framework版本

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用MQTTnet开发MQTT服务-.NET Framework版本

        前面使用的RabbitMQ 的MQTT服务,但我们使用MQTTnet 也是可以自己开发出一个服务端的

GitHub - harrylsp/MQTTServer: MQTTServerMQTTServer. Contribute to harrylsp/MQTTServer development by creating an account on GitHub.https://github.com/harrylsp/MQTTServer

1.安装MQTTnet库 2.创建MQTT服务  2.1 创建服务对象
public MqttServer mqttServer = null;
mqttServer = new MqttFactory().CreateMqttServer() as MqttServer;
2.2 创建服务对象参数配置
var optionsBuilder = new MqttServerOptionsBuilder()
.WithDefaultEndpoint().WithDefaultEndpointPort(1883).WithConnectionValidator(c =>
{
	var currentUser = username;
	var currentPwd = password;

	if (currentUser == null || currentPwd == null)
	{
		c.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;
		return;
	}

	if (c.Username != currentUser || c.Password != currentPwd)
	{
		c.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;
	}

	c.ReasonCode = MqttConnectReasonCode.Success;
})
.WithSubscriptionInterceptor(c =>
{
	c.AcceptSubscription = true;
})
.WithApplicationMessageInterceptor(c =>
{
	c.AcceptPublish = true;
});
2.3 注册监听回调事件
mqttServer.StartedHandler = new MqttServerStartedHandlerDelegate(new Action(e =>
{
	if (mqttServer.IsStarted)
	{ }
	LogManager.WriteLogEx(LOGLEVEL.INFO, "MQTT服务启动完成!");
}));

mqttServer.StoppedHandler = new MqttServerStoppedHandlerDelegate(new Action(e =>
{
	if (!mqttServer.IsStarted)
	{ }

	LogManager.WriteLogEx(LOGLEVEL.INFO, "MQTT服务停止完成!");
}));

mqttServer.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(new Action(e =>
{
	LogManager.WriteLogEx(LOGLEVEL.INFO, $"客户端[{e.ClientId}]已连接");
}));

mqttServer.ClientDisconnectedHandler = new MqttServerClientDisconnectedHandlerDelegate(new Action(e =>
{
	LogManager.WriteLogEx(LOGLEVEL.INFO, $"客户端[{e.ClientId}]已断开连接!");
}));

mqttServer.ClientSubscribedTopicHandler = new MqttServerClientSubscribedTopicHandlerDelegate(new Action(e =>
{
	LogManager.WriteLogEx(LOGLEVEL.INFO, $"客户端[{e.ClientId}]已成功订阅主题[{e.TopicFilter}]!");
}));

mqttServer.ClientUnsubscribedTopicHandler = new MqttServerClientUnsubscribedTopicHandlerDelegate(new Action(e =>
{
	LogManager.WriteLogEx(LOGLEVEL.INFO, $"客户端[{e.ClientId}]已成功取消订阅主题[{e.TopicFilter}]!");
}));

mqttServer.ApplicationMessageReceivedHandler = new MqttApplicationMessageReceivedHandlerDelegate(new Action(e =>
{
	LogManager.WriteLogEx(LOGLEVEL.INFO, $"客户端[{e.ClientId}]>> 主题:{e.ApplicationMessage.Topic} 负荷:{Encoding.UTF8.GetString(e.ApplicationMessage.Payload)} Qos:{e.ApplicationMessage.QualityOfServiceLevel} 保留:{e.ApplicationMessage.Retain}");
}));
2.4 开始启动服务对象
await mqttServer.StartAsync(optionsBuilder.Build());
2.5 服务运行

2.6 测试连接 

3. 发布消息
var message = new MqttApplicationMessage()
{
	Topic = topic,
	Payload = Encoding.UTF8.GetBytes(payload)
};

await mqttServer.PublishAsync(message);
 4. 其他

源代码:GitHub - harrylsp/MQTTServer: MQTTServer

更专业的MQTT服务 EMQX

https://www.emqx.com/zh/downloads-and-install?product=broker&version=4.3.10&os=Windows&oslabel=Windows

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/954611.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号