我对websockets这个话题非常陌生,我正试图找出正确的方法来处理设备和服务器之间的通信。
下面是我的场景:我有一个恒温器(非常类似于嵌套),它需要与web服务器进行通信。每次更改恒温器的温度时,我都需要将数据发送到web服务器,以更新数据库中的“当前状态”。别紧张,我能做到。
我感到困惑的部分是,当用户改变web界面的温度时,我认为websockets可能是一个用例。恒温器必须从服务器上输入这些信息,才能看到“哦,好吧,你希望它是66度。”
我曾想过让恒温器每2-5秒对服务器进行长时间轮询,以查看数据库中的“当前统计数据”是什么来改变温度,但这似乎有点过火了。
是否有方法打开恒温器与服务器之间的连接以侦听消息?
我开始阅读有关websockets的文章,但我认为不幸的是,它只基于浏览器。
因为我对这种类型的连接相当陌生,如果有人能在协议、通信等方面给我指明正确的方向,我会非常感激的!
技术规范
服务器是用Rails编写的
恒温器是用Java编写的
发布于 2013-09-26 14:27:06
Websockets可以在任何两个需要通信的程序之间使用,它们当然不限于浏览器。也就是说,你是否应该使用websockets是一个不同的问题。需要考虑的一件事是websockets涉及到持久的连接。这可能不是规模(如果你有很多设备),它也可能是过分的。如果你期望温度每天变化一次,那么一整天的持续连接都是对资源的巨大浪费。当通信需要“快速”和相对频繁时,通常使用websockets。除非你真的需要在恒温器中进行即时更新,否则我会让它每隔几分钟对服务器进行一次更新。
请注意,websockets是相当新的,所以您最后使用的任何库都可能有点不成熟。
发布于 2013-09-26 14:07:48
WebSockets只是一个类似于的隧道规范;它并不局限于浏览器,大多数通用语言都可以使用客户机库。
对于长期运行的连接来说,这似乎是一个合理的用例,但是,与WebSockets连接相比,我通常更喜欢原始的TCP连接,除非考虑到特定的限制(例如,大多数家庭互联网连接在连接到任意端口的服务器时没有问题)。
https://stackoverflow.com/questions/19030335
复制相似问题