MQTT和WebSocket

【开源物联网】基于WebSocket进行MQTT通信 MQTT是物联网主流通信协议,但是很多终端天然不具备Mqtt通信能力,比如Web H5、小程序等终端形式,这些终端提供更底层的WebSocket通信方式。因此,研究基于WebSocket进行Mqtt通信是非常普遍的需求。 阅读详情

MQTT和WebSocket

2016-08-24    心不留意...   来源  阅 31  转 1

http://www.cnblogs.com/ghj1976/p/3773981.html

2014

严格来说,MQTT跟WebSocket关系不大。他们不是在一个层级的。

 

MQTT和TCP、WebSocket的关系可以用下图一目了然:

fd8bfc1a045c026261782533cc48529e

 

参考资料:

http://www.zhihu.com/question/21816631

 

WebSocket的优势

以前,很多网站使用轮询实现推送技术。轮询是在特定的的时间间隔(比如1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给浏览器。轮询的缺点很明显,浏览器需要不断的向服务器发出请求,然而HTTP请求的header是非常长的,而实际传输的数据可能很小,这就造成了带宽和服务器资源的浪费。

Comet使用了AJAX改进了轮询,可以实现双向通信。但是Comet依然需要发出请求,而且在Comet中,普遍采用了长链接,这也会大量消耗服务器带宽和资源。

于是,WebSocket协议应运而生。 浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器通过 TCP 连接直接交换数据。WebSocket 连接本质上是一个 TCP 连接。

WebSocket在数据传输的稳定性和数据传输量的大小方面,具有很大的性能优势。Websocket.org 比较了轮询和WebSocket的性能优势:

HTTP 轮训每次需要返回871个字节,websocket每次只需要2个字节

Use Case A: 1,000个客户端每秒接受一个message,网络吞吐量 (2*1,000)=2,000 bytes = 16,000 每秒bits

Use Case B: 10,000个客户端每秒接受一个message,网络吞吐量 (2*10,000)=20,000 bytes = 160,000 每秒bits

Use Case C: 100,000个客户端每秒接受一个message,网络吞吐量 (2*100,000)=200,000 bytes = 1,600,000 每秒bits

poll-ws-compare

参考:

http://segmentfault.com/a/1190000000382788

Spring 4.0 中的 WebSocket 架构 
http://www.oschina.net/translate/websocket-architecture-in-spring-4-0

MQTT

 

MQTT 协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

  • 非常小的通信开销(最小的消息大小为 2 字节),小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
  • 支持各种流行编程语言(包括 C,Java,Ruby,Python 等等)且易于使用的客户端;
  • 使用发布 / 订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
  • 对负载内容屏蔽的消息传输。
  • 使用 TCP/IP 提供网络连接。
  • 有三种消息发布服务质量,让消息能按需到达目的地,适应在不稳定工作的网络传输需求 :
    • "至多一次",消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
    • "至少一次",确保消息到达,但消息重复可能会发生。
    • "只有一次",确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
  • 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

 

参考:

MQTT技术:为物联网而生 
http://www.leiphone.com/0828-danice-mqtt.html

 

MQTT 折腾笔记----协议简读 
http://www.cnblogs.com/youxilua/archive/2013/04/25/3041528.html

 

 

基于 WebSocket 的 MQTT 移动推送方案 
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1308_xiangr_mqtt/1308_xiangr_mqtt.html

来自: 心不留意外尘 > 《MQTT》

以文找文    |     举报

WebSocket与MQTT协议深度对比:选择合适的通信协议 在现代互联网应用中,实时通信变得愈发重要。随着物联网(IoT)和实时数据流的普及,选择合适的通信协议显得尤为关键。WebSocket和MQTT是当前最为流行的两种协议,它们各自有不同的应用场景、优缺点以及性能特点。在这篇文章中,我们将详细对比WebSocket和MQTT,帮助你根据具体需求做出最佳选择。 阅读详情

相关推荐

网络通信:MQTT 与 WebSocket

网络通信:MQTT 与 WebSocket

2401_85199775的博客 1612

MQTT和Websocket的区别

先说一下相同点 MQTT 和 WebSocket 都是应用层协议 目前底层都是使用 TCP 协议确保可靠传输数据 都规定了自己的报文(消息)结构 都支持双向通信 都使用二进制编码(有别于 HTTP 这一类基于文本编码的协议) 都是公开标准mqttrfc6455 再说一下不同点 通信模型不同 WebSocket 是一种简单的报文协议,着重解决浏览器和服务端不能进行双向通信的问题。本质上有点像是 TCP 协议之上的 UDP 协议。WebSocket 仅仅定义了会话的发起方式和报文格式及类型。如.

丨晋丨 1万+

TCP/IP, WebSocket 和 MQTT

按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP和MQTT是应用层的协议。在这三者之间, TCP是HTTP和MQTT底层的协议。大家对HTTP很熟悉,这里简要介绍下MQTT。MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网...

weixin_34014555的博客 1726

Socket,WebSocket和MQTT的区别

特性Socket协议MQTT协议通信模型点对点通信发布/订阅适用场景实时通信、在线游戏、视频通话等物联网、传感器网络、智能家居等灵活性高中等实时性高中等复杂性高低扩展性差高依赖组件无需要Broker消息大小无限制有限制安全性需自行实现加密措施支持TLS,但配置复杂通过上述优缺点的分析,可以更好地理解Socket协议和MQTT协议各自的适用场景和选择依据。在需要高实时性和灵活性的点对点通信场景中,Socket是较好的选择。

Maisule的博客 4841

HTTP、WebSocket、STOMP、MQTT 协议

要使用HTTP实现双向通讯,传统的方式即进行轮询已达到效果(即每隔一段时间,想服务器发出请求获取最新的数据),常见的轮询方式分为轮询(定时请求)和长轮询(请求后服务器在有数据变化时才响应,客户端在请求快过期前或请求响应后,再次发起请求)。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而 HTTP 请求与响应可能会包含较长的头部,其中真正有效的数据可能只是很小的一部分,所以这样会消耗很多带宽资源。通过TCP套接字,向服务器发送一个文本的请求报文(请求行、请求头、请求数据、空行)

qq_37819292的博客 2445

C#实现MQTT over WebSocket

C#实现MQTT over WebSocket

dandingwangzi的专栏 3191

websocket和mqtt

而MQTT5则是在2019年发布的,它在3.1.1版本的基础上做了更多的补充和完善,同时完全兼容3.1.1版本。文件大小:Paho MQTT.js相比小得多, MQTT.js 压缩版本311kb ,Paho MQTT.js 压缩版本只有31kb。PAHO MQTT.js版本1.0.2及之前的版本文件名用的是mqttws31.js,之后的版本文件名用的是paho-mqtt.js。PAHO MQTT.js除了版本0.9.0全局变量用的 Messaging,其他版本的导出的全局变量都是 Paho。

m0_37158404的博客 2431

MQTT 和 WebSocket 协议比较与选择

MQTT 与 WebSocket 并无绝对优劣,关键在于匹配业务场景。若需设备级可靠通信,选 MQTT;若侧重Web 端实时交互,WebSocket 更优;复杂场景下,可结合两者优势(如通过网关转换协议)。未来,随着边缘计算和 5G 普及,协议融合或将成为主流趋势。

1838

MQTT和Websocket的区别是什么?

https://zhidao.baidu.com/question/1372624954663331499.html MQTT(Message Queuing Telemetry Transport,消bai息队列遥测传输)是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如:   ①网络代价昂贵,带宽低、不可靠。   ②在嵌入设备中运行,处理器和内存资源有限。   该协议的特点有:   ①使用发布/订阅消息模式,提供一对多的消息发布,解除应用

a19576的专栏 4886

YonSuite如何新增用户并分配角色角色授权图文教程

用友YonSuite产品基础教学

ct341688的博客 623

【Matlab 传感器布局优化】基于群智能算法的wsn覆盖优化研究

本文主要是对同构和异构传感器在指定空间内的布局进行优化,以最大覆盖率为目标,使用了DBO/SCA/WOA/SSA/NOA等启发式算法,在100x100的空间内,对30,100,200个传感器进行优化,得到最优的布局位置和对应覆盖率。

u013367499的博客 1820

WebSocket与MQTT

在物联网(IoT)领域,​和确实都可以实现实时通信,但它们的核心设计目标、适用场景和角色存在显著差异。

qq_63041110的博客 2362

从零开始:手把手教你用Verilog搭建一个可配置的Cache模块(以Vortex GPGPU为例)

本文详细介绍了如何使用Verilog从零开始搭建一个可配置的Cache模块,以Vortex GPGPU为例。内容涵盖Cache设计基础、模块接口与参数化设计、核心子模块实现、仲裁与一致性机制、功能验证与性能调优等关键环节,适合RTL设计初学者和希望深入理解Cache工作原理的工程师。通过实战指南,读者可以掌握硬件代码分析技巧,提升Cache模块的设计能力。

weixin_42552315的博客 442

【MQTT】Javascript通过WebSocket连接MQTT

通过WebSocket服务,将MQTT服务收到的消息转发给网页,这样网页就也能使用MQTT协议了。SSL证书可以自己去制作,另外自制证书本来就是不安全的,需要自己想办法在网页中添加信任。这步比较麻烦,如果需要使用SSL,自己单独去研究下,这里主要讲解网页怎么使用mqtt。一个变通的方法是,在同一个程序中,同时集成MQTT服务和一个WebSocket服务。标准的MQTT是通过TCP协议来进行通信的,这样网页就没法使用MQTT协议了。当然,也可以不用MQTT协议,全部通过WebSocket来通信也可以。

天天向上 Up Up Up (*^▽^*) 3296

SAP LSMW数据批导操作手册及跨客户端传输方法(涉及默认值配置,及多余字段如何删除)

SAP LSMW数据批导操作手册及跨客户端传输方法

我好像病了的博客 6089

SYSU-MM01数据集评估避坑指南:从RGB/IR图像理解到Python评估脚本调优

本文详细解析了SYSU-MM01数据集在跨模态行人重识别(ReID)评估中的关键技巧与常见陷阱。从RGB/IR图像理解到Python评估脚本优化,提供了数据评估模式选择、single-shot/multi-shot差异分析、特征文件处理规范等实用指南,帮助研究者避开指标异常问题,提升评估效率与准确性。

weixin_29044713的博客 197

使用 WebSocket 连接 MQTT 服务器

近年来随着 Web 前端的快速发展,浏览器新特性层出不穷,越来越多的应用可以在浏览器端通过浏览器渲染引擎实现,Web 应用的即时通信方式 WebSocket 也因此得到了广泛的应用。 WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 通信协议于2011年被 IETF 定为标准 RFC 6455,并由 RFC 7936 补充规范。WebSocket API 也被 W3C 定为标准。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端

emqx_broker的博客 9737

YOLOv5改进系列(4)——添加ECA注意力机制

手把手教你在YOLOv5中加入ECA注意力机制,文内含两种方法,小白也能看懂!

路人贾的博客 8548

pythonweb使用mqtt_在python中通过websocket进行MQTT

is there any support in python to subscribe on mqtt broker with port 8080import sysimport paho.mqtt.client as mqttdef on_connect(mqttc, obj, flags, rc):print("rc: "+str(rc))def on_message(mqttc, obj, ...

weixin_39995280的博客 610

基于DNN神经网络的多输入多输出数据回归预测(附带Matlab代码)

假设我们的输入数据包含n个特征,输出数据包含m个特征。在本文中,我们将介绍如何使用DNN(深度神经网络)实现多输入多输出数据回归预测,并提供相应的Matlab代码。需要注意的是,上述代码中的DNN模型是一个简化的示例,您可以根据实际任务的复杂程度和要求进行相应的调整和优化。综上所述,我们介绍了如何使用DNN神经网络实现多输入多输出数据回归预测,并提供了相应的Matlab代码。函数对DNN模型进行训练,其中输入数据需要转置,以适应网络的输入要求。最后,我们使用训练好的模型对测试数据进行预测,并打印预测结果。

DevWizard的博客 1069

Oracle EBS Interface/API(29) - AP发票API

续上编文章《Oracle EBS Interface/API(28) - 客制化开发AP付款API》背景,介绍如调用官方提供标准AP发票API调用 用户界面 Invoices(Payables Manager->Invoices->Entry->Invoices) Open Interface Invoices(Payables Manager->Invoices->Entry->Open Interface Invoices) 快速参考 参考点 内容.

陈显平的专栏-Oracle EBS 1153

pythonweb使用mqtt,在python中通过websocket进行MQTT

is there any support in python to subscribe on mqtt broker with port 8080import sysimport paho.mqtt.client as mqttdef on_connect(mqttc, obj, flags, rc):print("rc: "+str(rc))def on_message(mqttc, obj, ...

weixin_32876681的博客 630

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

html怎么引用mqtt协议,mqtt websocket

MQTT和Websocket的区别是什么?MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。 而WebSocket则是浏览器与服务器全双工通信 (MQTTMessage Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议简单回答一下, MQTT ( MQ Telemetry Transport...

weixin_39603588的博客 473

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MQTT-WebSocket连接通信

MQTT-WebSocket连接通信 更新时间:2020-10-21 15:13:47 编辑我的收藏 本页目录 背景信息 操作步骤 物联网平台支持基于WebSocket的MQTT协议。您可以首先使用WebSocket建立连接,然后在WebSocket通道上,使用MQTT协议进行通信,即MQTT over WebSocket。 背景信息 使用WebSocket方式主要有以下优势: 使基于浏览器的应用程序可以像普通设备一样,具备与服务端建立MQTT长连接的能力。 WebSocket方式使用44

荒野求生的博客 3569

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: MQTT压力测试之Tsung的使用
下一篇: 客户端和服务端
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值