jquery - 在命令中,为所有用户启用 Rails 刷新页面

  显示原文与译文双语对照的内容
0 0

我想创建一个 Rails 应用程序,它将用作概述我本地教堂的服务/事件运行顺序的程序。 基本的概念是,控制声音。照明。视觉等的技术团队可以登录到应用程序中。

我希望生产商能够控制运行顺序,因这里他基本上是一个'下一步'/'背面'按钮,可以遍历每个元素。 这样团队就完全知道他们所在的服务阶段以及他们需要做什么。

我的问题:如果生产者按下'下一步'按钮,应用程序会刷新/更新,并看到最新的元素。 每个人都需要查看同样的信息- 而且也要快速。

感谢你的帮助 !

谢谢

li

时间: 原作者:

0 0

你可以让应用程序每 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的一部分,并且不是所有浏览器支持的( 完全) 。

原作者:
0 0

这将是 socket.io ( http://socket.io/ )的完美使用。 客户端可以告诉服务器将刷新命令广播到每个其他客户端。

原作者:
0 0

你已经将 jqueryajax 标签分配给你的问题,所以我假设 Rails 只是一个后端解决方案,无法处理客户端。 如果你的任务简单,并且依赖于所有用户的即时更新,我建议切换到一些javascript平台。 最受欢迎的是:

  1. Meteor.js
  2. node.js

然而,同样的事情仍然可以通过 Rails 后端完成。 这里还提供了大量可以供选择的方法:

  1. AJAX轮询
  2. AJAX长轮询
  3. web sockets
  4. 服务器端事件

查看关于这些方法的一个很好的主题: 什么是长轮询,web sockets,服务器发送事件( SSE ) 和 Comet? 可以通过网络很容易地找到实现的例子。

然而,大多数方法都需要一些客户端编码,但是可以使用 Rails 4的新特性减少它的量: 使用 ActionController::LiveActionController::Streaming的服务器端事件。 以下资源可能有帮助:

  1. 动作控制器概述:任意数据流的实时流。
  2. ActionController::Live 屏幕保护程序
  3. 动作控制器实时执行的示例。
原作者:
...