Ruby on rails 使用数据库';s在webapp中更改提要

Ruby on rails 使用数据库';s在webapp中更改提要,ruby-on-rails,rethinkdb,Ruby On Rails,Rethinkdb,如何在Web应用程序中使用RejectionDB的更改提要,请参见?我目前使用RubyonRails。我曾尝试在谷歌上搜索“RejectionDB”更改提要“rails”和“RejectionDB”更改提要“websocket” 我希望在网页上以尽可能低的延迟显示RejectionDB表的更新。RejectionDB似乎不支持复杂的客户端身份验证(所有客户端都共享身份验证令牌),因此您无法通过Javascript在客户端执行此操作 但您可以创建一个管道:在您的服务器上运行websocket,它将

如何在Web应用程序中使用RejectionDB的更改提要,请参见?我目前使用RubyonRails。我曾尝试在谷歌上搜索“RejectionDB”更改提要“rails”和“RejectionDB”更改提要“websocket”


我希望在网页上以尽可能低的延迟显示RejectionDB表的更新。

RejectionDB似乎不支持复杂的客户端身份验证(所有客户端都共享身份验证令牌),因此您无法通过Javascript在客户端执行此操作

但您可以创建一个管道:在您的服务器上运行websocket,它将从数据库中获取记录并将其传递给客户端。使用它会像这样:

require 'em-websocket'
require 'rethinkdb'
include RethinkDB::Shortcuts

EventMachine.run do
  @clients = []
  @cursor = r.table("authors").changes.run

  EM::WebSocket.start(:host => '0.0.0.0', :port => '3001') do |ws|
    ws.onopen do |handshake|
      @clients << ws
    end

    ws.onclose do
      @clients.delete ws
    end

    @cursor.each do |document|
      @clients.each{|ws| ws.send document}
    end
  end
end
需要“em websocket”
需要“重新思考数据库”
包括数据库::快捷方式
EventMachine.rundo
@客户=[]
@游标=r.table(“作者”).changes.run
EM::WebSocket.start(:host=>'0.0.0',:port=>'3001')do | ws|
ws.onopen do |握手|

@客户端db是指从服务器(从Rails)而不是从客户端使用。理解这一点真的很重要!如果您的数据上有一个侦听器(changefeed),那么软管更改将被路由到您的Rails应用程序

如果要从前端(从浏览器)添加到数据库,您可能会对以下两个项目感兴趣:

一旦这些更改被路由到应用程序,您就可以按照自己的意愿处理它们。如果您希望将这些更改路由到前端,以便只向用户显示这些更改,那么您可以通过web套接字发送这些更改。Faye是一个很好的图书馆

这就是它的样子。在ruby代码中,您可以添加如下内容:

 # Add Faye
  App = Faye::RackAdapter.new MessageApp, mount: "/faye"

  # Changefeed listener
  r.table("messages").changes.em_run(Conn) do |err, change|
    App.get_client.publish('/message/new', change["new_val"])
  end
基本上,只要
messages
表中有更改,就通过web套接字发送新值。您可以在此处查看完整示例(带有前端代码):

下面是Ruby文件:


您想对这些数据做什么?我想显示对表的更改。不只是显示更改。