Ruby on rails 如何根据另一个客户端(rails中)发出的请求更新网页?
这是我的需要: 我必须显示网页上的一些信息。Ruby on rails 如何根据另一个客户端(rails中)发出的请求更新网页?,ruby-on-rails,websocket,Ruby On Rails,Websocket,这是我的需要: 我必须显示网页上的一些信息。 web浏览器实际上位于同一台计算机上(本地主机)。 我希望数据由服务器主动动态更新 由于HTTP协议实际上是一个请求/响应协议,我知道要获得此功能,服务器和客户端(在这里是本地的)之间的连接应该以某种方式保持打开(Websocket、服务器发送事件等) 是的,“实时”现在真的是一种流行趋势,有很多框架可以做到这一点(meteor等…) 事实上,除了使用WebSocket(Rails 4中的服务器发送事件和Rails 5中的ActionCable)之外
web浏览器实际上位于同一台计算机上(本地主机)。
我希望数据由服务器主动动态更新 由于HTTP协议实际上是一个请求/响应协议,我知道要获得此功能,服务器和客户端(在这里是本地的)之间的连接应该以某种方式保持打开(Websocket、服务器发送事件等) 是的,“实时”现在真的是一种流行趋势,有很多框架可以做到这一点(meteor等…) 事实上,除了使用WebSocket(Rails 4中的服务器发送事件和Rails 5中的ActionCable)之外,Rails似乎也支持这种功能性
所以实现这个功能并不是什么大事,我想 然而,我真正想要的是从另一个客户端发出的请求触发网页更新(本地显示) 这张图片将更好地解释:
我猜线程是在存储所有会话数据(实例变量)的地方执行的。
为了使用一些“实时”机制,连接保持打开状态,因此线程Y不会终止。(我想这就是它的工作原理)
在这里,对外部客户机的响应并不重要。只需HTTP OK响应即可。但也可以返回确认网页。
但是无论如何,线程X(和/或连接)没有特别的理由保留
如何在本地web浏览器上回显此新数据 我看到了两种不同的方法:
- 路径A:在终止之前,线程X将数据(其实例变量)传递给连接仍然打开的线程Y。因此,服务器能够更新web浏览器
- 路径B:在终止之前,线程X使用特定套接字直接向web浏览器发送请求(我指的是响应,因为它是服务器)
对于方法A,如何在线程之间交换数据?
对于方法B,如何使用已打开的套接字 但这两种方法(或另一种)中哪一种实际上是最好的方法呢 再次感谢您阅读我的文章,并对我的英语不好表示歉意。
我希望我已经清楚地表达了我的需要。你想得太多了。没有必要考虑线程和套接字等低级机制。大多数(全部?)酒吧订阅实时更新工具(ActionCable、faye等)以“频道”和“事件”的形式运行 因此,您的流程将如下所示:
查看本介绍指南:。你想得太多了。没有必要考虑线程和套接字等低级机制。大多数(全部?)酒吧订阅实时更新工具(ActionCable、faye等)以“频道”和“事件”的形式运行 因此,您的流程将如下所示:
查看此介绍指南:.同时,我发现rails中使用了一些gem或框架(
faye
,pluzi
,EventMachine
,puhser
)。。。但我必须明确指出,我想要的不是真正的实时内容(聊天或类似的东西)。。。我感兴趣的只是能够根据另一个客户端的请求从本地服务器向本地web浏览器发送数据。因此,我不需要任何沉重的第三方宝石。。由于我将使用Rails5,所以使用Rails5的ActionCable新特性也很好。同时,我再次找到了关于其中一些机制的精彩解释。现在我正在研究如何使用rails或django复制这些机制(不过只是为了学习目的…),同时我发现rails中使用了一些gem或框架(faye
,pluzi
,EventMachine
,puhser
)。。。但我必须明确指出,我想要的不是真正的实时内容(聊天或类似的东西)。。。我感兴趣的只是能够根据另一个客户端的请求从本地服务器向本地web浏览器发送数据。因此,我不需要任何沉重的第三方宝石。。由于我将使用Rails5,所以使用Rails5的ActionCable新特性也很好。同时,我再次找到了关于其中一些机制的精彩解释。现在我正在研究如何使用rails或django复制这些机制(只是为了学习目的…),事实上我知道一些pub-sub(等)工具和框架在幕后执行所有这些需求。。。但是,通过集成这些机制(或框架),我觉得我将压倒我的体系结构。。涅弗瑟尔