Ruby on rails 如何在Rails中动态高效地从数据库(通知)中提取信息

Ruby on rails 如何在Rails中动态高效地从数据库(通知)中提取信息,ruby-on-rails,ruby,dynamic,notifications,Ruby On Rails,Ruby,Dynamic,Notifications,我在一个Rails应用程序中工作,下面是需要解决方案的场景 我正在后台使用Sidekiq执行一些耗时的过程,并将相关信息保存在数据库中。现在,当每个流程完成时,我们希望在一个单独的区域中显示通知,说明流程已完成 因此,通知区域确实需要从后端提取内容(此通知区域在每个页面中都可用)并动态显示。所以,我认为Ajax一定是一种选择。但是,我不知道如何仅在特定区域触发它。或者是否有其他选项,客户机可以通过该选项高效地从服务器获取动态内容,而不会产生太多流量 我知道这将是一个宽泛的话题。但任何相关信息都将

我在一个Rails应用程序中工作,下面是需要解决方案的场景

我正在后台使用
Sidekiq
执行一些耗时的过程,并将相关信息保存在数据库中。现在,当每个流程完成时,我们希望在一个单独的区域中显示
通知
,说明
流程已完成

因此,通知区域确实需要从后端提取内容(此通知区域在每个页面中都可用)并动态显示。所以,我认为Ajax一定是一种选择。但是,我不知道如何仅在特定区域触发它。或者是否有其他选项,客户机可以通过该选项高效地从服务器获取动态内容,而不会产生太多流量


我知道这将是一个宽泛的话题。但任何相关信息都将不胜感激。谢谢:)

在@h0lyalg0rithm的评论中建议的答案是可以选择的

但是,基本选项是无效的

  • 在javascript中使用setinterval每x秒执行一次任务。比如说投票

  • 使用jQuery或本机ajax通过路由向控制器/操作轮询信息,并让控制器将数据作为JSON推送

  • 使用document.getElementById或jQuery更新页面上的数据


  • 您正在寻找一种永久连接(使用SSE或WebSocket),Rails已经开始关注这一点


    现场直播

    您正在寻找“实时”连接:

    “实时”功能通过保持连接打开来工作 在应用程序和服务器之间。Rails是基于HTTP请求的 框架,这意味着它只发送对请求的响应。通往 发送实时数据是保持响应打开(使用永久连接),这允许您将更新的数据发送到其上的页面 自己的时间尺度

    实现这一点的方法是使用前端方法保持连接“活动”,并使用后端堆栈为更新提供服务。前端将需要一个或一个,您将使用JS来连接它

    SEE和WebSocket基本上允许您在“正常”请求范围之外访问服务器(它们使用
    text/event stream
    content/mime类型)


    建议

    我们使用一种叫做

    这基本上创建了一个第三方websocket服务,您可以将更新推送到该服务。一旦服务接收到更新,它会将其发送到连接到它的任何频道。您可以使用

    我建议直接使用这项服务(他们有一个(我与他们无关),并提供一个超级简单的API


    除此之外,你应该看看Rails的功能

    我认为一个很好的方法是使用Rails 4中提供的流控制器。监听更改并以json格式发送数据,并相应地更新视图。怎么样?@emaillenin:谢谢你提供的信息。让我查一下。@hlyalg0rithm:谢谢。我会经常检查的。我很感激你的回答。无论如何,请让我知道(费伊)是不是一个好的选择?是的,费伊就像一个推手。但是请记住,您需要在您的终端处理服务器,而Pusher这样的服务可以为您处理服务器。Hanks:)让我试试这些选项。