websocket和mqtt

WebSocket是一种通信协议,它允许在浏览器和服务器之间建立持久连接,并允许双向传递数据。MQTT则是一种轻量级的发布/订阅消息传输协议,常用于物联网(IoT)设备之间的通信。

(1)js能直接实现mqtt吗,还是需要通过websocket间接实现?

JavaScript本身不能直接实现MQTT,但可以通过WebSocket间接实现

要使用JavaScript实现MQTT,可以先使用WebSocket与服务器建立连接,然后通过WebSocket将MQTT协议的消息发送给服务器。服务器再根据MQTT协议对这些消息进行处理,例如发布、订阅、取消订阅等操作。

因此,虽然JavaScript不能直接实现MQTT,但可以通过WebSocket间接实现。

(2)mqtt协议主要版本?(2023-11)

目前MQTT协议的版本主要有两个,分别是MQTT3.1.1MQTT5。其中,MQTT3.1.1是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议,工作在TCP/IP协议族上。而MQTT5则是在2019年发布的,它在3.1.1版本的基础上做了更多的补充和完善,同时完全兼容3.1.1版本。

(3)通过websocket实现mqtt有哪些js库?

通过WebSocket实现MQTT的JavaScript库有MQTT.js和Paho MQTT.js:

  • MQTT.js 。MQTT.js是一个完全开源的MQTT协议的客户端库,使用JavaScript编写,可用于Node.js和浏览器。在Node.js端可以通过全局安装使用命令行链接,同时支持MQTT/TCP、MQTT/TLS、MQTT/WebSocket连接;值得一提的是MQTT.js还对微信小程序有较好的支持。
  • Paho MQTT.js。Paho MQTT.js是一个JavaScript库,用于在浏览器中实现MQTT协议的通信。它是由Eclipse Paho项目提供的,支持MQTT协议的客户端实现,包括连接、订阅、发布等操作。

文件大小:Paho MQTT.js相比小得多, MQTT.js 压缩版本311kb ,Paho MQTT.js 压缩版本只有31kb。
MQTT.js v3.0.0 及以上版本后,已经完整支持到 MQTT 5.0。
Paho MQTT.js 支持MQTT协议的版本3.1和3.1.1,目前不支持MQTT协议5。 (2021年后就没看到该库有更新了)

paho-mqtt.js官网:https://eclipse.dev/paho/clients/js/ (访问卡)
paho-mqtt - npm

PAHO MQTT.js并没有构建的npm包,只有通过直接下载源代码或使用CDN链接的方式在项目中引入。

PAHO MQTT.js版本1.0.2及之前的版本文件名用的是mqttws31.js,之后的版本文件名用的是paho-mqtt.js。

PAHO MQTT.js版本0.9.0全局变量用的 Messaging,之后到1.0.4版本全局变量用的是 Paho.MQTT, 1.0.0全局变量用的是 Paho 。

mqtt.js官网: mqtt - npm

相关推荐
高兴达6 分钟前
RPC框架--实现一个非常简单的RPC调用
网络协议·rpc·firefox
~山有木兮39 分钟前
LiteHub中间件之限流实现
网络·http·中间件
cui_win1 小时前
【网络】Linux 内核优化实战 - net.core.flow_limit_table_len
linux·运维·网络
BD_Marathon2 小时前
虚拟机网络检查
网络
游戏开发爱好者82 小时前
iOS App首次启动请求异常调试:一次冷启动链路抓包与初始化流程修复
websocket·网络协议·tcp/ip·http·网络安全·https·udp
2501_915106322 小时前
频繁迭代下完成iOS App应用上架App Store:一次快速交付项目的完整回顾
websocket·网络协议·tcp/ip·http·网络安全·https·udp
cocologin3 小时前
RIP 技术深度解析
运维·网络·网络协议
GalaxyPokemon4 小时前
RPC-Client模块
网络·网络协议·rpc
chirrupy_hamal5 小时前
如何避免 SYN 攻击?
网络·tcp
DemonAvenger5 小时前
Go语言中的TCP编程:基础实现与最佳实践
网络协议·架构·go