Jquery 所有用户的Rails刷新页面

Jquery 所有用户的Rails刷新页面,jquery,ruby-on-rails,ajax,refresh,pjax,Jquery,Ruby On Rails,Ajax,Refresh,Pjax,我希望创建一个Rails应用程序,它将被用作概述本地教会服务/活动运行顺序的程序。基本概念是,控制声音、灯光、视觉等的技术团队和志愿者可以登录应用程序并查看包含服务所有要素(包括时间安排等)的运行顺序 我希望制片人能够控制运行顺序,这样他/她基本上有一个“下一步”/“后退”按钮,可以循环播放节目的每个元素。通过这种方式,团队成员都可以确切地知道他们所处的服务阶段以及他们需要做什么 我的问题:我如何使它在制作人按下“下一步”按钮时,应用程序为所有用户刷新/更新,并让他们看到最新的元素?每个人都需要

我希望创建一个Rails应用程序,它将被用作概述本地教会服务/活动运行顺序的程序。基本概念是,控制声音、灯光、视觉等的技术团队和志愿者可以登录应用程序并查看包含服务所有要素(包括时间安排等)的运行顺序

我希望制片人能够控制运行顺序,这样他/她基本上有一个“下一步”/“后退”按钮,可以循环播放节目的每个元素。通过这种方式,团队成员都可以确切地知道他们所处的服务阶段以及他们需要做什么

我的问题:我如何使它在制作人按下“下一步”按钮时,应用程序为所有用户刷新/更新,并让他们看到最新的元素?每个人都需要查看相同的信息,而且要快

感谢您的帮助

谢谢


Lee

您可以使用ajax,以固定的时间间隔轮询控制器的操作,并获取更新的视图

或者,您可以选择web套接字,它将自动轮询浏览器中的更改。当您的服务器发生更改时,您将把更改推送到客户端浏览器。 看见
或者你可以自己用谷歌搜索它,你可以让应用程序每5秒进行一次轮询,或者做一些事情来检查是否有什么改变

另一个选择是使用

通过这种方式,服务器可以向页面上的每个人发送通知,指示某些内容已更改。然后,客户端的javascript将处理此类通知。 它看起来像这样

if (!!window.EventSource) {
  var source = new EventSource('my_stream');
}

source.addEventListener('message', function(e) {
  if(e.data.page_changed) {
    // Update the page accordingly
  }
}, false);

请注意,推送通知是html5的一部分,并非所有浏览器都(完全)支持。

这将是socket.io()的完美使用。
客户机可以告诉服务器向其他客户机广播刷新命令。

好吧,您已经为您的问题分配了
jquery
ajax
标记,因此我假设您理解Rails只是一个后端解决方案,无法处理客户端更新本身(至少在Rails 4之前)。如果您的任务像您描述的那样简单,并且对所有用户都非常依赖即时更新,我建议您切换到一些javascript平台,因为它们是为此类任务而发明的。最受欢迎的是:

  • 然而,同样的事情仍然可以在rails后端完成。在这里,您还可以选择许多方法:

  • AJAX轮询
  • AJAX长轮询
  • 网袋
  • 服务器端事件
  • 请查看关于这些方法中的每种方法的精彩主题:。实现的示例也可以在web上轻松找到

    这些方法中的大多数都需要一些客户端编码,但是,Rails 4的一个新功能可以减少客户端编码的数量:使用
    ActionController::Live
    ActionController::Streaming
    的服务器端事件。以下资源可能会有所帮助: