原文 6 facts why it’s worth upgrading to the brand new MQTT 3.1.1
version

摘要:新版 MQTT 3.1.1 终于在 2014 年 10 月 30 日推出了。尽管大部分改动看着不明显,其实性能已经向前迈进一大步。本文将对比 MQTT 3.1和 3.1.1 的区别并详细介绍。

1. 会话表示标识

如果一个终端与服务器之间建立一个持久会话连接(假设这个终端没有使用到 clean session 来清除已有会话标识),那么会在CONNACK中引入额外的标识 Session Present Flag。
表明MQTT服务器已经拥有当前客户端上次连接会话信息,例如 订阅的主题,排队信息以及其他信息。
逻辑值分为true 和 false。若为true, 客户端可以减少一次发送订阅Subscribe的交互步骤,更有效率的通信,若为false, 客户端需要再次发送Subscribe信息

2. 订阅失败代码反馈

之前的几个版本,客户端无法知道其发送的订阅主题是否被MQTT broker 接受。 这个特性的加入使得MQTT主题管理的权限更加精细化。若无授权,服务器会将错误代码(0x80)附加在SUBACK中,这样客户端就知道订阅失败了。

3. 匿名MQTT客户端

如果你的案例需要临时的或者匿名的MQTT客户端,现在也可以做到了。客户端现在仅仅需要在发送CONNECT的时候将客户端标识符置空即可。MQTT 服务器会随机分配一个客户端标识符。 这对于一些只要Publish的客户端非常有用。

4. 快速发布,无须等待

一个非常有趣的新特性,客户端能够在等到MQTT服务器发回CONACK之前发布消息。
这让一些小型的紧凑型的MQTT客户端可以CONNECT,PUBLISH 和 DISCONNECT,而无须等待MQTT服务器返回的确认码。这一特性对于突发模式的客户端(只关心数据尽快发出,而不是担心是否要维护一个长连接)同样适用。
当然,这需要MQTT服务器实现在分发消息之前检查客户端是否有权限发布到这些主题上。

5. 更长的客户端标识符

MQTT 3.1 的版本,对于客户端标识符的限制是23字节,十分不方便也带来不少麻烦。
MQTT 3.1.1 中,将客户端标识符的上限设为65535 字节。

- 其他小的改动

  • CONNECT消息可变头部协议名称MQIsdp被改为MQTT,花销两个字节使得整个协议名更好读。
  • 所有字符串使用UTF-8编码
  • 协议级别 由3字节增加到4字节
  • MQTT over websockets 被定义,IANA分配标识符为mqtt

关于译者

左昱骐,云巴工程师,南安普顿大学硕士。云巴是基于 MQTT 的实时消息系统。

[译] 你应该升级 MQTT3.1.1 的6个理由的更多相关文章

  1. Php:学习笔记(一):版本选择

    (注:本文来自网络) 超过75%的网站使用了PHP作为开发语言,wordpress,phpmyadmin和其他一些开源项目的盛行,带来了一大批的长尾用户.然而,他们一般安装之后却很少升级.下图是目前P ...

  2. XA 事务

    4.11.3 什么是XA 事务? <数据库程序员面试笔试宝典>第4章数据库基础,本章主要介绍数据库基础部分的面试题,比较适合应届毕业生,也适合由其他岗位转数据库岗位的人员.本节为大家介绍什 ...

  3. 译图智讯VIN码识别助力汽配商转型升级

    汽配猫是上海佳驰经合能源科技有限公司自主开发的汽车配件B2B网上商城及服务平台,该平台依托互联网云技术.利用创新的商业模式及互联网思维,整合汽配产业链优秀资源,为汽车维修保养企业等产业链各方面提供汽配 ...

  4. [译]:Orchard入门——构建你的第一个Orchard网站

    原文链接:Building Your First Orchard Site 文章内容基于Orchard 1.8版本 本文将逐步简要介绍Orchard提供的功能.如果你是第一次使用Orchard,本文将 ...

  5. 升级react 15.4,常见的错误及解决方案

    最近项目由react0.14.X升级到react 15版本,因为react15还是做了一些相对大一点的更新的(详情可以参考一下我的另一篇文章关于react15的一点总结),相对:来说react升级之后 ...

  6. 解剖SQLSERVER 第十一篇 对SQLSERVER的多个版本进行自动化测试(译)

    解剖SQLSERVER 第十一篇    对SQLSERVER的多个版本进行自动化测试(译) http://improve.dk/automated-testing-of-orcamdf-against ...

  7. [译]关于.NET Core1.1的通告

    以下翻译可能会有不准确的地方, 想看原文的童鞋移步到Announcing .NET Core 1.1, 微软的开源真心喜欢, 希望有更多的童鞋关注微软, 关注.NET Core 我们很兴奋地宣布.NE ...

  8. [译] Python 3.5 协程究竟是个啥

    转自:http://blog.rainy.im/2016/03/10/how-the-heck-does-async-await-work-in-python-3-5/ [译] Python 3.5 ...

  9. C++ Primer中文版(第5版)(顶级畅销书重磅升级全面采用最新 C++ 11标准)

    C++ Primer中文版(第5版)(顶级畅销书重磅升级全面采用最新 C++ 11标准) [美]Stanley B. Lippman( 斯坦利李普曼)  Josee Lajoie(约瑟拉乔伊 )  B ...

随机推荐

  1. 自定义圆环progressbar

    RoundProgressBar.java /** * RoundProgressBar.java [v1.0.0] * classes: com.example.audiorecordingtest ...

  2. Nhibernate基础

    Nhibernate(英文冬眠的意思) 常用方法 Contains Evict Clear  在 NHibernate 中一切必须是 Virtual 的吗? http://www.cnblogs.co ...

  3. iOS7新JavaScriptCore框架入门介绍

    前阵子,Apple正式发布了新的iOS 7系统,最大最直观的改变在于界面变得小清新范了,我也提到<iOS,你真的越来越像Android了>.不过对于移动开发者来说,除了要适应Xcode 5 ...

  4. SQLServer 获得所有表结构(包括表名及字段)

    then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, ( then '√'else '' end) 标识, (case when (SE ...

  5. django shell 集合

    1.创建project $ django-admin startproject mysite 2.真正执行,修改数据库 $ python manage.py migrate 3.运行服务 $ pyth ...

  6. 【开源框架】EFW框架中的系统权限与页面子权限详解

    回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://pan.baid ...

  7. npm命令总结

    统一切换到项目目录 安装redux :npm install -save redux 安装react-redux : npm install -save react-redux

  8. 【Java设计模式】单例模式

    ### 1. 概述> 单例模式是确保某一个类中有且只有一个实例. ----------### 2. 饿汉式单例``` javapublic class SingletonInstance { p ...

  9. php中关于js保存文件至本地的问题

    最近在搞一个livezilla的在线客服聊天的东东,客户界面要求添加一个下载聊天记录的功能.于是我就是翻看了下网上的各种关于”js保存文件至本地“的资料,发现只能在IE下通过execCommand实现 ...

  10. AssetBundle系列——游戏资源打包(一)

    将本地资源打包,然后放到资源服务器上供游戏客户端下载或更新.服务器上包含以下资源列表:(1)游戏内容资源assetbundle(2)资源维护列表,包含每个资源的名字(完整路径名)和对应的版本号[资源名 ...