之前用的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