`
rensanning
  • 浏览: 3548589 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38145
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607306
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682329
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89350
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401851
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69693
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91712
社区版块
存档分类
最新评论

MQTT入门(9)- 连接和会话

 
阅读更多
(1)Connection

连接指的是client和broker之间,client和client之间不能直接连接。client和broker之间建立连接,必须先发送一个 CONNECT 消息,并附带上必要的认证信息。broker接收到 CONNECT 之后,会执行认证等处理,应答一个 CONNACK 消息。连接一旦建立,broker会为client保持这个连接,直到客户端发起disconnect。

虽然client一般都是在router之下的局域网中,但client发起 CONNECT 给broker后,broker会保持该连接,所以MQTT是可以穿透NAT的。

CONNECT消息
  • ClientId:broker内部唯一标示客户端的ID(CleanSession为true时可为空)
  • CleanSession:标示client和broker之间是否需要建立持久连接(CleanSession为false表示持久连接)
  • Username/Password:客户端验证(平文传输)
  • WillMessage:遗嘱消息
  • KeepAlive:客户端发起PING Request的时间间隔,确保连接正常。


需要注意的是,ClientId, WillMessage, Username/Password 这三项内容是存在 CONNECT 消息的Payload里的。


(2)Session

Session分为以下两种:

a)Persistent Session
broker 会存储订阅消息或未转发消息,为了给client存储信息需要指定ClientId。
如果CleanSession为false但没有指定ClientId是无法连接到broker的。

b)Clean Session
broker 不会存储任何订阅消息或未转发消息,适用于只publish的客户端。

当一个client连接到broker时,broker会为其创建一个session。
这个session相关信息将会同时保存在broker和client中。

session里包含以下内容:
  • 客户端的订阅信息
  • 从broker接收来的还没有ack的消息
  • 发送给client的还没有ack的消息


client意外中断后发起重连broker,如果是持久session,client能够立即再获取到未接收到的消息。
client和broker之间的连接可以通过设置不同的clean_session来变更。
client可以是 Publisher 或者是 Subscriber 或者同时两者都是。
  • 大小: 29 KB
1
0
分享到:
评论

相关推荐

    MQTT入门(10)- MQTT与WebSocket

    **MQTT入门(10)- MQTT与WebSocket** 在物联网(IoT)领域,消息传输协议(MQTT)和WebSocket是两种广泛使用的通信协议。它们各自具有独特的优势,适用于不同的应用场景。本文将深入探讨这两者的基本概念、工作原理...

    MQTT入门资料(用于了解什么是MQTT)

    ### MQTT入门资料(用于了解什么是MQTT) #### MQTT协议简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,它为低带宽和不可靠网络连接下的设备提供了高效的...

    MQTT 入门介绍.docx

    ### MQTT入门介绍知识点详解 #### 一、MQTT概述 **MQTT**(Message Queuing Telemetry Transport)是一种轻量级的、基于客户端-服务器的消息发布/订阅传输协议,由IBM在1999年首次发布。它专为远程设备提供实时可靠...

    MQTT入门教材

    ### MQTT入门教材知识点详解 #### 一、MQTT协议简介 **MQTT**,全称为**Message Queuing Telemetry Transport**(消息队列遥测传输协议),是一种基于**发布/订阅**模型的轻量级消息协议,适用于资源受限的环境。...

    Mqtt Demo 开发学习之必备-新手1天入门

    5. **保持会话(Session Persistence)**:MQTT支持会话持久化,即使客户端断开连接,当重新连接时,它可以恢复之前的状态,继续接收未读的消息。 6. **质量 of Service (QoS)**:MQTT定义了三种服务质量等级,QoS ...

    mqttClient最新的源码

    M2Mqtt库提供了API,使开发者能够轻松地创建连接到MQTT Broker的客户端,并进行发布和订阅操作。以下是一些关键知识点: 1. **连接与认证**:M2Mqtt库允许你配置连接参数,如服务器地址、端口号、用户名和密码,...

    MQTT物联网通讯协议入门及Demo实现.doc

    MQTT 物联网通讯协议入门及 Demo 实现 1. MQTT 协议概念 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一个轻量级的发布/订阅消息传输协议,设计用于受限设备和低带宽、高延迟或不可靠的...

    MQTT 开发手册大全

    书中还涉及到MQTT消息的基本概念,包括消息的QoS(服务质量)等级、会话和消息的持久化处理等。这些信息对于开发者来说非常重要,因为它们决定了消息传输的可靠性和效率。在客户端编程方面,书中对于如何使用MQTT...

    4、STM32+BC35 -阿里云MQTT协议传输DHT11温湿度.rar

    连接到阿里云MQTT服务器并保持会话。 5. 数据发布:将DHT11的温湿度数据封装成MQTT消息,发布到预设的主题上,让云端能够接收到这些数据。 6. 错误处理与重试机制:考虑到网络的不稳定性和可能出现的错误,应设置...

    JMS-ActiveMQ入门实例

    **JMS与ActiveMQ入门实例详解** Java消息服务(Java Message Service,简称JMS)是Java平台中用于创建、发送、接收和阅读消息的应用程序接口。它为应用程序提供了标准的接口,可以跨越多种消息中间件产品进行通信。...

    MqttSubmessage.zip

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息协议,常用于物联网、移动应用和低...在入门级项目中,这样的例子有助于理解MQTT的工作原理,并为更复杂的物联网和实时通信应用场景打下基础。

    Apache.NMS.ActiveMQ-1.8.0-bin.zip

    Apache.NMS.ActiveMQ库提供了一系列的类和接口,使.NET开发者能够方便地创建生产者、消费者、连接工厂和会话等对象,用于发送和接收消息。例如,`ConnectionFactory`用于创建与ActiveMQ服务器的连接,`Connection`...

    计算机网络从入门到精通教程

    此外,随着云计算和物联网的发展,教程可能还会涵盖虚拟化技术、物联网协议(如MQTT)、边缘计算等相关内容,帮助你了解网络技术的最新趋势。 总的来说,"计算机网络从入门到精通教程"是一份全面而实用的学习资源,...

    activeMQ简单入门案例

    ActiveMQ作为中间件,负责在生产者和消费者之间传递消息,保证消息的可靠传输,同时支持多种协议如AMQP、STOMP、MQTT等。 1. **安装与配置ActiveMQ** - 下载最新版的ActiveMQ发行版,解压至本地目录。 - 启动...

    activeMQ的使用入门

    在Spring的环境下,消息的生产和消费可以通过声明式的方式完成,无需手动管理连接和会话。 在实际项目中,ActiveMQ的高级特性也值得了解。例如,它可以设置持久化,确保即使在服务器宕机后,消息也不会丢失。另外,...

    MQQT客户端与服务端学习/测试环境

    这些代码可以帮助你快速入门,了解如何建立连接、发布和订阅消息。 5. IoT模拟器:可能包括一些模拟设备或传感器的工具,如SimulMQTT,让你能在无实物设备的情况下模拟物联网环境,测试MQTT通信。 6. 边缘计算和云...

    ESP32-Rhasspy-Satellite:该仓库已实现esp32独立MQTT音频流。 被设计为Rhasspy的卫星(https:rhasspy.readthedocs.ioenlatest)。 它支持多种设备

    空闲,热键和断开连接时的动态亮度和颜色 通过MQTT静音/取消静音麦克风 通过MQTT静音/取消静音扬声器 通过MQTT调整音量(如果设备支持) 通过MQTT调整输出(扬声器/插Kong)(如果设备支持) 通过MQTT调整增益...

    从入门到精通的ActiveMQ.docx

    8. **Session**:会话,负责创建生产者和消费者,是发送和接收消息的线程。 **ActiveMQ 快速入门** ActiveMQ 的安装和启动相对简单。在 Windows 上,只需运行 bin 目录下的 activemq.bat 文件。配置文件位于 conf ...

    Apache Active MQ 简单的示例

    首先,我们需要配置JMS连接工厂,创建一个到Active MQ服务器的连接,然后创建会话和目的地(队列或主题),最后创建生产者和消费者。生产者用于发送消息,而消费者用于接收消息。这个示例可能涵盖了Active MQ的基本...

Global site tag (gtag.js) - Google Analytics