Java 这是websocket编程的适当使用吗?

Java 这是websocket编程的适当使用吗?,java,ruby-on-rails,sockets,websocket,Java,Ruby On Rails,Sockets,Websocket,我对WebSocket这个话题非常陌生,我正试图找出正确的方法来处理设备和服务器之间的通信 下面是我的场景:我有一个恒温器(非常类似于),需要与web服务器通信。每次更改恒温器上的温度时,我都需要将数据发送到web服务器,以更新数据库中的“当前统计数据”。简单,我能做到 我感到困惑的是,当用户从web界面改变温度时,WebSocket可能是一个用例。恒温器必须从服务器上获取这些信息,才能看到“哦,好吧,你希望温度达到66度。” 我曾想过让恒温器每隔2-5秒长时间轮询服务器,以查看数据库中的“当前

我对WebSocket这个话题非常陌生,我正试图找出正确的方法来处理设备和服务器之间的通信

下面是我的场景:我有一个恒温器(非常类似于),需要与web服务器通信。每次更改恒温器上的温度时,我都需要将数据发送到web服务器,以更新数据库中的“当前统计数据”。简单,我能做到

我感到困惑的是,当用户从web界面改变温度时,WebSocket可能是一个用例。恒温器必须从服务器上获取这些信息,才能看到“哦,好吧,你希望温度达到66度。”

我曾想过让恒温器每隔2-5秒长时间轮询服务器,以查看数据库中的“当前统计数据”是什么,从而改变温度,但这似乎有些过分

有没有办法打开恒温器和服务器之间的连接以侦听消息

我开始阅读关于WebSocket的文章,然而,我认为不幸的是,它只基于浏览器

由于我对这些类型的连接还比较陌生,如果有人能为我指出协议、通信等方面的正确方向,我将不胜感激

技术规格

服务器是用RubyonRails编写的


恒温器是用Java编写的,WebSockets只是一个规范,用于通过HTTP传输类似于TCP套接字的东西;它不仅限于浏览器,而且大多数通用语言都可以使用客户端库


对于长时间运行的连接来说,这似乎是一个合理的用例,但我通常更喜欢原始TCP连接而不是WebSockets连接,除非您考虑到特定的限制(例如,大多数家庭Internet连接在连接到任意端口的服务器时没有问题).

WebSocket可以在需要通信的任何两个程序之间使用,它们当然不限于浏览器。也就是说,您是否应该使用WebSocket是另一个问题。需要考虑的一件事是WebSocket涉及一个持久连接。这可能无法扩展(如果你有很多设备),也可能是杀伤力过大。如果你期望温度每天改变一次,那么一整天都保持连接是对资源的巨大浪费。当通信需要“快速”且相对频繁时,通常使用WebSocket。除非你真的需要恒温器中的即时更新,否则我会让它每隔几分钟ping一次服务器进行更新

另请注意,WebSocket是相当新的,因此您最终使用的任何库都可能有点不成熟


不久前,我们制作了一些java到java WebSocket的原型。我们在客户端使用了库,在服务器端使用了库(构建在netty上)。

如果服务器每5-10秒检查一次房间的温度,那么(除了规定的功能之外)该怎么办?这会是web套接字的更多用例吗?好的,很高兴知道。实际上,我用这个ruby框架快速地设置了一个websocket服务器和客户端,并且运行良好。你现在让我对“浪费资源”感到好奇。恒温器可能一天只更换一次,但问题是如果通过移动应用程序更换,恒温器必须立即知道这一点。要么每2秒长时间轮询服务器以检查更改,要么打开持久连接。了解哪种方式比另一种方式更“浪费”以及为什么吗?@BrianW-为什么恒温器需要立即做出反应?当我在家里更换恒温器时,它需要几分钟才能启动,谁知道多久才能真正达到目标温度。@dostrander-是的,这可能更有意义。但是,你仍然可以问,你是否真的需要经常检查。我知道当空调运行时,我家的温度不会每10秒改变一次。