轮询是在客户端完成的,当应用程序或网站定期向服务器请求数据时会发生轮询。
WebSockets是客户端和服务器之间的持久连接,主要用作通信协议。
最后,SSE(Server-SentEvents)是一种异步机制,通过活动连接将数据推送到客户端。当新的数据块或更新可用时,服务器也可以发送数据。连接可能保持打开状态,但这并不一定意味着数据正在传输。
仅从这些定义,您就可以看到客户机-服务器进程有多么不同。这也意味着它们各有优缺点,这使得它们在某些情况下非常适合使用,而在另一些情况下就不那么实用了。
MQTT作用概述
MQTT协议依赖于类似网络的系统,包括服务器,一个或多个客户端和代理。代理是MQTT服务器,连接的设备是客户端。发布者和客户端都不会处理这些工作。相反,处理能力和通信主要由代理处理。
因此,MQTT允许开发人员建立通信通道层次结构。从视觉上看,这就像一个树枝。发布者或服务器首先向代理发送新数据,以及传递控制说明。
然后,代理会促进另一端的客户之间的信息交换。高级客户端可以从发布服务器接收每一条消息或更新,而低级客户端只接收与其基本级别相关的消息。
所有发布并发送给代理的数据(以及接收到的数据)均采用二进制协议进行编码。因此,必须先解释该消息,然后才能使用数据内容。
尽管如此,MQTT仅通过纯文本分发安全性凭证,因此它并不完全安全,并且不能为大多数应用程序提供足够的身份验证或安全性。开发人员可以通过实现SSL框架解决此问题,该框架通过加密保护任何传输的数据。
MQTT:优点和缺点
优点
1)MQTT是一种难以置信的轻量级协议,旨在连接资源最受限的设备。
2)它内置了多层服务质量(QoS)。
3)大多数云OT厂商和提供商已经支持MQTT,使其成为传感器不断收集和报告聚合数据的IoT解决方案的理想选择。
4)MQTT是双向的。
缺点
1)由于集中代理的性质,开发人员在使用MQTT时可能会遇到扩展限制,本地代理中心会限制其支持的扩展量。
2)具有讽刺意味的是,MQTT通常运行在TCP/IP网络堆栈的顶部,该堆栈是为具有更大内存和处理能力的设备而设计的。因此,唤醒和通讯时间可能会延长,这可能会影响长期的电池消耗。
SSE概述
SSE连接通常在客户端-服务器配置之间的链接的客户端开始。客户端通过在JavaScript中创建新的EventSource对象来启动并打开连接。它通过HTTP请求发送相关的URL。
建立连接后,客户端将期待并寻找事件消息流。只要传输数据,HTTP请求就保持打开状态。一段时间后,当客户端认为传输过时时,连接将关闭。如果取消了初始请求,则客户端也可以直接关闭连接。