如您所见,SSE比MQTT更简单,并且不涉及代理。
SSE:优点和缺点
优点
1)数据通过简单且广泛使用的HTTP协议而不是专有协议进行同步。
2)包括对重新建立连接和事件ID功能的内置支持。
3)对于利用单向通信的应用程序和服务非常有用。
缺点
1)不幸的是,SSE只支持UTF-8编码,不支持二进制数据。
2)对最大打开连接数的严格限制可能使事情变得困难,每个浏览器都设置了限制。
3)SSE是单向的。
MQTT与SSE
比较MQTT和SSE时要考虑的最重要的事情是它们的连接能力。例如,SSE是单向的,专门为需要从服务器提取信息的服务或应用程序而设计。另一方面,MQTT是一种健壮的双向通信选项,可以促进服务器与客户端之间来回的数据传输。
这意味着SSE非常适合将信息存储在服务器上并推送到客户端的应用程序,例如实时股票应用程序或基于新闻的服务。从本质上讲,不需要从客户端以相反的方向传递数据。
这也解释了为什么开发人员在物联网应用程序,传感器和设备中首选MQTT的原因,当然还有其他优点。由于信息具有双向结构,因此可以双向传递。
SSE开源解决方案
了解SSE之后,您可能已经准备好寻找可以帮助您入门的开源SSE软件。Gossed就是一个例子。它允许您将任何程序的标准输出作为服务器发送的事件推送到浏览器。
还有SSEChannel,可以将消息广播到所有连接的客户端。另外,此工具会自动维护历史记录。它的另一个功能是能够根据需要向客户端发送自动“保持活动(keep-alive)”数据包的功能。
MQTT开源解决方案
也有开放源码MQTT选项。EclipseMosquitto是轻量级的,适用于所有设备。它可以处理从智能手机到连接传感器的各种设备的消息传递需求。还有一个测试服务器,它允许您使用几个与MQTT相关的场景查看客户机的功能。
HiveMQ是MQTT的另一个代理,它在2019年4月成为一种开源软件。它专门用于处理与物联网设备相关的信息。该工具提供了一个实时监视界面,以及用于故障诊断的高级端到端MQTT分析。
实施中的困难
首先,为MQTT或SSE实现内部解决方案可能听起来可行。但是,有一些常见的问题需要克服,比如与消息顺序和有保障的传递相关的问题。您还必须牢记安全性,包括访问控制和配置。2019年,安全研究人员详细描述了至少3200个拥有智能家居技术的家庭是如何由于MQTT的不安全错误配置而可能受到黑客攻击的。
再加上其他必需的东西,比如创建开发人员文档,就很容易理解为什么您最终会认为,从操作和工程的角度来看,使用内部解决方案过于耗费人力和成本。随着最终用户数量的增长,你很可能会得出这样的结论。在加大努力的同时,这里列出的所有挑战可能会变得更成问题。