嵌入式设备的服务器端应用程序

时间:2012-10-25 21:05:46

标签: html5 tcp embedded websocket firewall

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

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

我一直在阅读WebSockets,看起来它们正是我所需要的,特别是与HTML5配对时。

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

1 个答案:

答案 0 :(得分: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客户端。

免责声明:我是高速公路的作者并为Tavendo工作。