MQTT-SN协议乱翻之实现要点

前言

本篇是MQTT-SN 1.2协议最后一篇翻译了,主要涉及实现要点,很简短。

需要支持QoS 值为 -1

QoS虽默认设置有0,1,2三个值,但还有一种情况其值为-1。来自客户端的PUBLISH消息中若QoS为-1的情况下,此刻客户端不会关心和网关有没有建立连接,也不在乎时间点,有消息就需要发出去。透明的网关需要维护此类消息并与远程的MQTT Server建立一个专用TCP连接。聚合网关或hybird混杂网关可使用已有的MQTT Server连接转发此类消息。

定时器和计时器实践建议

定时器/计数器说明推荐值
T_ADV广播频率大于15分钟
N_ADV没有接收到ADVERSE广播次数2-3次
T_SEARCHGW发送SEARCHGW延迟5秒
T_GWINFO等待网关响应GWINFO广播延迟时长5秒
T_WAIT等待时长大于5分钟
T_RETRY重试时长10s - 15s
N_RETRY重试次数3-5次

网关处理客户端的休眠和存活定时器,需要根据客户端在所发送消息中延续时间的定义值。例如,定时器值应该高出10%大于指定值持续时间1分钟,如果不高出50%。

网关持有的Topic Id和Topic Name的映射维护

协议严重建议所有客户端的Topic Id和Topic Name之间对应关系不应该使用一个共享池对象,因为这样可以避免不同客户端Topic Id和Topic Name匹配错误,将PUBLISH消息发错地方(客户端接收者),可能会导致引发潜在的不可恢复的灾难性后果。

正确做法是按照客户端的维度为维护Topic Id和Topic Name的对应关系。任何两个客户端之间可能会存在同样的Topic Name,但对应的Topic Id不一样。可能Topic Id一致,但Topic Name不一样。

ZigBee 相关问题

  • 在ZigBee规范中,网关需要被托管在一个协调器节点内,MQTT-SN协议建议网关更应该而驻留在一个不间断运行的的ZigBee路由器节点上,能够随时接收来自客户端消息。
  • 受限于ZigBee网络支持层有限的数据负载容量,MQTT-SN消息最大负载被限制为60字节。

转载于:https://www.cnblogs.com/yudar/p/4642485.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle-REDO日志文件分析(insert)

1:记录当前scnselect dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER------------------------11595722:创建表CREATE TABLE team (team_code VARCHAR2(3),team_name VARCHAR2(30),country_code VARCHAR2(3) );INSERT INTO team VALUES (M…

删除修改bond

参考地址:http://www.111cn.net/sys/linux/79301.htm 四、删除bonding设备 如由于最初配置的bonding设备取名为bond0,而后改名为了bond1,造成了两个bonding设备的存在,现在需删除bond0 。先查看下网络设备: # ls /sys/…

学习笔记(18):Python网络编程并发编程-守护进程

立即学习:https://edu.csdn.net/course/play/24458/296429?utm_sourceblogtoedu 守护进程(了解) 1.概念:守护进程是主进程在创建子进程的时候,将子进程设置成守护自己的进程,等主进程结束后,不管子进程的…

静态页面之间的转发与json与ajax做到动态数据

我们见过很多使用jsp ,php,asp的动态网页技术的网站了,我们知道如果一个网站内容更新频率极低,而内容量不是十分庞大时,这样的网站(一次开发完成后不会需要较多的维护成本)的完全可以使用全部使用静态页面来做,此时其实反而可以得到更好的效果(更快的响应时间(省掉了服务器各种…

数组的最后一位的下一位为什么是0?

以下是我做的两个实验&#xff0c;加证实了数组的最后一位的后一位是0&#xff0c;只应该是系统自动添加的标志位 1、比如 int a[5] 则a[5]0,这个是什么原因我还没有搞懂 #include<iostream> using namespace std;int main() {int a[5];int *pa;for(int i0;i<5;i){a[i…

iOS开发网络篇—NSURLConnection基本使用

iOS开发网络篇—NSURLConnection基本使用 一、NSURLConnection的常用类 &#xff08;1&#xff09;NSURL&#xff1a;请求地址 &#xff08;2&#xff09;NSURLRequest&#xff1a;封装一个请求&#xff0c;保存发给服务器的全部数据&#xff0c;包括一个NSURL对象&#xff0c;…

如何查看mysql连接相关参数

1.查看当前所有连接的详细资料: mysqladmin -u root -ppassword processlist 这里password为数据库用户root的密码 2.只查看当前连接数(Threads就是连接数.): mysqladmin -u root -ppassword status 这里password为数据库用户root的密码 3.如何知道当前MySQL设置的并发连接数是…

学习笔记(19):Python网络编程并发编程-互斥锁

立即学习:https://edu.csdn.net/course/play/24458/296430?utm_sourceblogtoedu 1.互斥锁&#xff1a; 多进程间的内存是相互隔离的&#xff0c;因此其数据也是相互隔离的&#xff0c;但是所有的进程都共享一个文件操作系统或者说共享文件处理器和打印端。而共享带来的是竞争…

使用HTML5+CSS3制作圆角内发光按钮----示例

<!doctype html> <html> <head> <meta charset"utf-8" /> <title>制作漂亮的圆角按钮<title> <style type"text/css"> .loginBtnDiv { float:right; padding-right:50px; padding-top:10px; } .loginBtn, .Resg…

C++中的sort()函数的原形

1、sor(a,an,compare) {//前两个是参数是待排序的数组首地址和尾地址 //最后一个参数是compare表示的比较类型 //可调用functional函数的less&#xff08;&#xff09;和greater&#xff08;&#xff09;函数比较大小}

鼠标放上超链接显示背景效果

鼠标放上超链接显示背景效果&#xff1a; <html> <head> <style type"text/css"> a.one:link {color: #ff0000} a.one:visited {color: #0000ff} a.one:hover {color: #ffcc00}a.two:link {color: #ff0000} a.two:visited {color: #0000ff} a.two:…

学习笔记(20):Python网络编程并发编程-互斥锁与join的区别

立即学习:https://edu.csdn.net/course/play/24458/296432?utm_sourceblogtoedu 互斥锁与join的异同&#xff1a; 1.同&#xff1a;都是将多进程并发模式变成多进程串行&#xff0c;保证了数据的有序性 2.异&#xff1a; 互斥锁只是对于进程的局部代码实施串行执行变化&#x…

Kali渗透(二)之被动信息收集

被动信息收集 公开渠道可获得的信息 与目标系统不产生直接交互 尽量避免留下一切痕迹 下面是两个关于开源情报&#xff08;OSINT&#xff09;的书籍 美国军方 北大西洋公约组织 信息收集内容 一.IP地址段与域名信息 二.邮件地址 三.文档图片数据 四.公司地址 五.公司组织…

ccBPM典型的树形表单和多表头表单的流程示例

ccBPM典型的树形表单和多表头表单的流程 关键字&#xff1a;树形表单。ccBPM支持树形表单&#xff0c;也可以称之为树结构的多表单或者多表头表单。 应用场景&#xff1a;比如项目招标类流程&#xff0c;在填写项目申请的环节&#xff0c;需要填写公司简介、公司业绩、项目实施…

由strcat函数引发的对char *a和char a[]以及sizeof和strlen

/* http://www.cnblogs.com/kaituorensheng/archive/2012/10/23/2736069.html参考这篇文章* char *a "Hello";Hello存放在常量区&#xff0c;是无法修改的。 * 通过指针只可以访问字符串常量&#xff0c;而不可以去改变它 * * * char a[] "Hello";…

for(;;)函数中判断条件执行顺序

for(i100;i>0&#xff1b;--i) { cout<<"i"<<i<<endl; } 它的执行过程如下&#xff1a; 1) 先求解表达式1。 2) 求解表达式2&#xff0c;若其值为真&#xff08;非0&#xff09;&#xff0c;则执行for语句中指定的内嵌语句&…

学习笔记(21):Python网络编程并发编程-队列的使用

立即学习:https://edu.csdn.net/course/play/24458/296433?utm_sourceblogtoedu 队列和管道 1.存在的意义&#xff1a; 1&#xff09;在前面的笔记中&#xff0c;使用join和互斥锁来保证了硬盘数据共享的数据安全性&#xff0c;但是降低了代码的运行效率&#xff1b; 2&#x…

dbms_xplan之display_cursor函数的使用

文章来源&#xff1a;http://blog.csdn.net/leshami/article/details/6866925 DBMS_XPLAN包中display_cursor函数不同于display函数&#xff0c;display_cursor用于显示SQL语句的真实的执行计划&#xff0c;在大多数情况下&#xff0c;显示真实 的执行计划有助于更好的分析SQL语…

H5+JS实现《Just Do 8》游戏源码分享

【界面效果图】 【代码结构】 【代码结构解释】 1、使用html语言实现数据 2、使用css3语言实现样式 3、使用JS语言实现路基控制 【注意是想】 1、如需查看效果&#xff0c;请使用手机浏览器&#xff0c;或者使用appcan打包查看 2、如果使用浏览器&#xff0c;请选择google的Chr…

windows下的结束标志

空格 ctrlz ctrlz 回车 int main() { stack<string> ss; //std::vector<int> ss; string str; cout<<"请输入字符串"<<endl; while(cin>>str) { ss.push(str); //if(str[0]1) …