• 服务端配置
  1. 链接方法

创建MQTT服务器类似于创建MQTT客户机。下面的代码显示了创建一个新的MQTT服务器的最简单方法,该服务器的TCP端点正在默认端口1883上侦听。

// Configure MQTT server.
var optionsBuilder = new MqttServerOptionsBuilder().WithConnectionBacklog(100)//最大链接数.WithDefaultEndpointPort(1883);//监听端口号var mqttServer = new MqttFactory().CreateMqttServer();
mqttServer.StartAsync(optionsBuilder.Build());//服务启动

配置参数如下所示

函数名 功能说明
Build 构建配置参数
WithApplicationMessageInterceptor 允许处理来自客户端的所有已发布消息
WithClientId 服务端发布消息时使用的ClientId
WithConnectionBacklog 设置要保留的连接数
WithConnectionValidator 验证连接
WithDefaultCommunicationTimeout 设置默认的通信超时
WithDefaultEndpoint 使用默认端点
WithDefaultEndpointBoundIPAddress 使用默认端点IPv4地址
WithDefaultEndpointBoundIPV6Address 使用默认端点IPv6地址
WithDefaultEndpointPort 使用默认端点端口
WithEncryptedEndpoint 使用加密的端点
WithEncryptedEndpointBoundIPAddress 使用加密的端点IPv4地址
WithEncryptedEndpointBoundIPV6Address 使用加密的端点IPv6地址
WithEncryptedEndpointPort 使用加密的端点端口
WithEncryptionCertificate 使用证书进行SSL连接
WithEncryptionSslProtocol 使用SSL协议级别
WithMaxPendingMessagesPerClient 每个客户端允许最多未决消息
WithPersistentSessions 保持会话
WithStorage 使用存储
WithSubscriptionInterceptor 允许处理来自客户端的所有订阅
WithoutDefaultEndpoint 禁用默认端点
WithoutEncryptedEndpoint 禁用默认(SSL)端点

账户验证

var optionsBuilder = new MqttServerOptionsBuilder().WithConnectionValidator(c =>
{if (c.ClientId.Length < 10){c.ReasonCode = MqttConnectReasonCode.ClientIdentifierNotValid;return;}if (c.Username != "mySecretUser"){c.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;return;}if (c.Password != "mySecretPassword"){c.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword;return;}c.ReasonCode = MqttConnectReasonCode.Success;
});

另一种验证账户方式

        mqttServer.ClientConnectedHandler = new MqttServerClientConnectedHandlerDelegate(MqttClientConnectedEvent);/// <summary>/// 可以增加对客户端的校验规则/// </summary>/// <param name="e"></param>static void MqttClientConnectedEvent(MqttServerClientConnectedEventArgs e){if (e.ClientId.Length < 10){Console.WriteLine(MqttConnectReturnCode.ConnectionRefusedIdentifierRejected);}if (e.UserName != "gaodong"){Console.WriteLine(MqttConnectReturnCode.ConnectionRefusedBadUsernameOrPassword);}}

可以在服务器选项中设置自定义拦截器。对于服务器接收到的每个应用程序消息,都会调用该拦截器。这允许在应用程序消息被持久化(对于保留的消息)之前以及在被分派给订阅者之前扩展它们。这允许在硬件设备不知道时间或时区等情况下向每个应用程序消息添加时间戳。以下代码显示了如何使用拦截器:

var optionsBuilder = new MqttServerOptionsBuilder().WithApplicationMessageInterceptor(context =>{if (context.ApplicationMessage.Topic == "my/custom/topic"){context.ApplicationMessage.Payload = Encoding.UTF8.GetBytes("The server injected payload.");}// 可以像这样禁止发送特定客户端id的消息:if (context.ClientId != "Someone"){context.AcceptPublish = false;return;}// 还可以读取有效负载并扩展它。例如,在JSON文档中添加时间戳.// 当物联网设备没有自己的时钟且消息的创建时间可能很重要时,这很有用.}).Build();

拦截订阅

可以设置自定义拦截器来控制MQTT客户机可以订阅哪些主题。这允许将私有API主题移动到仅对某些客户端可用的受保护区域。下面的代码显示了如何使用订阅拦截器。

// 防止每个客户端订阅多个主题.
var optionsBuilder = new MqttServerOptionsBuilder().WithSubscriptionInterceptor(context =>{if (context.TopicFilter.Topic.StartsWith("admin/foo/bar") && context.ClientId != "theAdmin"){context.AcceptSubscription = false;}if (context.TopicFilter.Topic.StartsWith("the/secret/stuff") && context.ClientId != "Imperator"){context.AcceptSubscription = false;context.CloseConnection = true;}}).Build();

MQTT 服务端搭建以及详解相关推荐

  1. 七、Oracle11g R2服务端卸载图文详解过程

    Oracle11g R2服务端卸载图文详解过程 注:由于Oracle 11g R2服务端安装的时候已经包含了客户端,所以服务端的卸载方案跟客户端的一样,也就是说,客户端卸载按照以下步骤同样适用. 一. ...

  2. android mqtt服务器搭建,Mqtt从服务端到Android客户端搭建(mqtt服务端搭建)

    一.简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议. 此处不再引入官方文字描述,以个人开发认识浅谈一下 本文分为两部分: 1. M ...

  3. https客户端与服务端认证过程详解

    Go和HTTPS 四月 30, 2015 27 条评论 近期在构思一个产品,考虑到安全性的原因,可能需要使用到HTTPS协议以及双向数字证书校验.之前只是粗浅接触过HTTP(使用Golang开 发微信 ...

  4. java 服务端渲染_基于vue-ssr服务端渲染入门详解

    第一部分 基本介绍 1.前言 服务端渲染实现原理机制:在服务端拿数据进行解析渲染,直接生成html片段返回给前端.然后前端可以通过解析后端返回的html片段到前端页面,大致有以下两种形式: 1.服务器 ...

  5. win10安装oracle11g 服务端及配置详解

    第一部分:Oracle 11g 的安装 一.准备工作 修改文件cvu_prereq,使之能够通过Oracle的环境检查 文件位置:Database\stage\cvu 文件名称:cvu_prereq. ...

  6. Windows 网络服务架构系列课程详解(一) ----DHCP服务器的搭建与配置

    Windows 网络服务架构系列课程详解(一) ---------DHCP服务器的搭建与配置   实验背景: 企业网络环境中在没有配置DHCP服务器时,经常会遇到这样的情况,用户不懂怎么去配置IP地址 ...

  7. mqtt服务器搭建php,MQTT 服务端

    MQTT 服务端 MQTT是一个基于客户端-服务器的消息发布/订阅传输协议.MQTT协议是轻量.简单.开放和易于实现的,这些特点使它适用范围非常广泛.在很多情况下,包括受限的环境中,如:机器与机器(M ...

  8. 【夯实Spring Cloud】Spring Cloud中的Eureka服务注册与发现详解

    本文属于[夯实Spring Cloud]系列文章,该系列旨在用通俗易懂的语言,带大家了解和学习Spring Cloud技术,希望能给读者带来一些干货.系列目录如下: [夯实Spring Cloud]D ...

  9. Windows 网络服务架构系列课程详解(六) ---利用NLB群集实现WEB服务器的可靠性...

    Windows 网络服务架构系列课程详解(六) -----利用NLB群集实现WEB服务器的可靠性   实验背景: 在大型网络环境中存在这样一种情景,公司内部的FTP服务器出现故障或脱机了,而且不能快速 ...

最新文章

  1. 范道馨晟宾馆还不错!
  2. 安卓linux终端termux下载,高级手机终端app
  3. 【教程】Edraw Max使用教程:如何打印大流程图?
  4. [转]js实现简单的双向数据绑定
  5. jithub使用整理资料
  6. MySQL 5.7 update误操作后数据恢复详解
  7. Fail to get tape drive(tsm) inventory
  8. (转)pb控制打印机
  9. 微信支付:不支持虚拟货币交易 如发现违规行为将予以清退处理
  10. H5新增音频标签-audio
  11. 波士顿大学计算机工程硕士,波士顿大学计算机工程专业硕士.pdf
  12. 全球首个CTLA-4抑制剂逸沃在中国上市;全球首个原发性轻链型淀粉样变治疗药物兆珂速在华获批 | 医药健闻...
  13. YOLOv5桌面应用开发,手把手教学实操(上)——附源代码
  14. 地球引擎中级教程——地球引擎对象(含练习)
  15. 负载大逃亡:四十二路怪兽联军及七条逃生法则(很喜欢)
  16. Reso | 什么是 XML?
  17. vue项目你一定会用到的性能优化!
  18. Hapi.js 起步 - 写给前端开发的 Node Web 框架入门
  19. win10+NVIDIA GTX 960M+CUDA 8.0+cudnn6.0+tensorflow安装
  20. CANOE 14/15 DIVA DELA APE19 CRACK DONGLE KEYMAN

热门文章

  1. 国内有哪些大数据公司?
  2. 广州移动烽火HG680-LC_S905L3_安卓9.0_线刷固件包
  3. Python 第五阶段 学习记录之---Django 进阶
  4. 电子版论文怎么弄打印,哪里打印论文便宜
  5. 中文拼写纠错_[NLP]中文拼写检纠错
  6. flutter jsonEncode和jsonDecode,sharedpreferences存model数据
  7. 仿写小米案例过程中遇到的问题及解决方法
  8. Ubuntu16.04安装GTX1080ti显卡驱动
  9. 疯狂坦克 高级教程(二)
  10. 有限理性建模的方法和计算机平台,有限理性假设下的多方计算协议建模与仿真...