2

我想要一些关于可以处理来自设备的实时数据并根据输入做出决策的最佳服务器端代码的建议。一个简单的例子:假设我有一个支持网络的温度计,运行一个轻型 TCP/IP 客户端堆栈。当温度达到 30 度时,我希望设备与服务器联系,然后我希望服务器向我发送电子邮件。我还希望服务器能够发送打开加热器的命令。

这里的问题是能够从服务器启动 TCP 消息,并通过各种任意防火墙和路由器,一直到客户端设备。我知道有一些“解决方法”,比如轮询服务器以获取更新,或者我调用服务器的“长轮询”,并保持连接打开以防它有东西要发送。这里的问题是带宽。消息很少见,但很重要,因此标头和握手占流量的 98%。

我一直在阅读 WebSockets,似乎它们正是我所需要的,尤其是与 HTML5 搭配使用时。

有谁知道可以在云服务器上运行并使用一些标准化方法将数据推送到我的设备的现成服务器软件包?我真的不想在这里重新发明轮子,我不敢相信我是第一个尝试这个的人。我看到一些人使用他们自己的专有解决方案来做这件事,但我对购买一站式服务包更感兴趣。

4

1 回答 1

1

WebSocket 是一种将嵌入式设备连接到后端基础设施的有效选择,因为它具有低开销、低延迟以及与 Web 和通用网络基础设施的兼容性。有多种可用的服务器实现,例如 Jetty、基于 node.js 等。

例如,这是一个将 Arduino 设备连接到 WebSocket 服务器和浏览器客户端的演示,在图表中显示实时数据:

那里使用的技术 AutobahnPython 是基于 Python/Twisted 的 WebSocket 实现,

  • 提供服务器和客户端实现
  • 直接在 RasperryPi 等嵌入式设备上运行
  • 可以轻松访问通过串行或 CANbus 连接的传感器(因为 Twisted 非常支持)
  • 在 WebSocket 之上提供 RPC 和 PubSub 消息传递模式

该技术是开源的,因此您可以推出自己的解决方案。如果您需要帮助/服务来为您完成它,请联系我;)我们还提供 Tavendo WebMQ,这是一个虚拟设备(VMware、EC2),它添加了功能、管理 UI 等,还包括一个 REST API 来将数据推送到 WebSocket客户。

免责声明:我是 Autobahn 的作者,为 Tavendo 工作。

于 2012-10-26T07:39:38.657 回答