MQTT简记2
之前用的2.8.5版本的,后来想升级一下,发现已经是3.0以上的,程序有所改动
如下:
(1)服务器端启动服务:
// 配置一个mqtt服务.
var optionsBuilder = new MqttServerOptionsBuilder()
//连接记录数,默认 一般为2000
.WithConnectionBacklog(2000)
//服务器连接端口
.WithDefaultEndpointPort(port)
//连接验证器
.WithConnectionValidator(e => ConnectionValidationHandler(e))
////持续会话
.WithPersistentSessions()
.WithDefaultCommunicationTimeout(TimeSpan.FromMilliseconds(60000))
//每个客户端主题存1千万条数据
.WithMaxPendingMessagesPerClient(1000000)
;
//创建Mqtt服务器
mqttServer = new MqttFactory().CreateMqttServer();
////开启订阅事件
mqttServer.ClientSubscribedTopicHandler= new MqttServerClientSubscribedHandlerDelegate(MqttNetServer_SubscribedTopic);
//取消订阅事件
mqttServer.ClientUnsubscribedTopicHandler = new MqttServerClientUnsubscribedTopicHandlerDelegate(MqttNetServer_UnSubscribedTopic);
//客户端消息事件
mqttServer.UseApplicationMessageReceivedHandler(MqttServe_ApplicationMessageReceived);
//客户端连接事件
mqttServer.UseClientConnectedHandler(MqttNetServer_ClientConnected);
//客户端断开事件
mqttServer.UseClientDisconnectedHandler(MqttNetServer_ClientDisConnected);
//启动服务
await Task.Run(async () => { await mqttServer.StartAsync(optionsBuilder.Build()); });
各个方法:连接断开订阅那些也类似
/// <summary>
/// 数据接收
/// </summary>
private static async Task MqttServe_ApplicationMessageReceived(MqttApplicationMessageReceivedEventArgs arg)
{
}
/// <summary>
/// mqtt客户端连接方法
/// </summary>
/// <returns></returns>
private static void ConnectionValidationHandler(MqttConnectionValidatorContext eventArgs)
{
}
更多的可以在github看 mqttnet开源库,https://github.com/chkr1011/MQTTnet wiki
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?