这是我的需要: 我必须从网页上显示一些信息 Web浏览器实际上位于同一台计算机上(localhost) 我希望服务器计划动态更新数据。
由于HTTP协议实际上是一个请求/响应协议,我知道要获得此功能,服务器和客户端(这里是本地的)之间的连接应该以某种方式保持打开(Websocket,Server-Sent Events)等等。)
是的,“实时”现在真的是时尚潮流,有很多框架可以做到这一点(流星等......)
事实上,除了使用Websockets(Rails 4中的服务器发送事件和Rails 5中的ActionCable)外,Rails似乎也支持此功能。 因此,实现这一功能并不是什么大问题,我猜......
然而,我真正想要的是触发另一个客户提出的请求更新网页(在本地显示)..
这张照片将更好地解释:
好的,这是我的问题(顺便说一句,谢谢你到目前为止看我) 如何在本地Web浏览器上回显这些新数据?
我看到了两种不同的方法:
我应该在两种方法中使用哪种机制来实现这种功能? 对于方法A,如何在线程之间交换数据? 对于方法B,我如何使用已打开的套接字?
但是这两种方法(或另一种)中的哪一种实际上是最好的方法呢?
再次感谢你为我读到目前为止,并为我糟糕的英语感到抱歉 我希望我已经足够清楚地表明了我的需要。
答案 0 :(得分:3)
你正在思考这个问题。没有必要考虑线程和套接字等低级机制。大多数(所有?)pub-sub实时更新工具(ActionCable,faye等)按照"渠道"和"事件"。
所以,你的流程将如下所示:
客户端A(网络浏览器)向您的服务器发出请求,并订阅来自频道"客户端事件" (或者其他的东西)。
客户端B(另一个浏览器)向服务器发出请求,要求将事件发布到频道"客户端事件"。
Pub-sub库有其神奇之处。
客户端A获取更新并相应地更新UI。
查看此简介指南:Action Cable Overview。