Rails - 王菲推送数据

Rails - Faye pushing data

我不知道如何从 rails 服务器发布一些数据,我想在 js 中做类似的事情

var publication = client.publish('channel', {data});

我发现了类似的东西:

engine.publish(message, channels)

但是不知道怎么用

在服务器端,在 js.erb 文件中,您必须向频道广播消息。即

<% broadcast "/messages/new" do %>
  $("#chat").append("<%= escape_javascript render(@message) %>");
<% end %>

从控制器广播 message/data。即

def create
  respond_to do |format|
    format.json do 
      broadcast "channel" do 
         @message.to_json
      end 
    end
  end
end

在客户端,您必须在布局或模板中包含 faye javascript 并且必须订阅该频道。即

<%= javascript_include_tag :defaults, "http://localhost:9292/faye.js" %>

和布局或模板中的 dom 容器。即

<ul id="chat">
  <%= render @messages %>
</ul>

并通过 javascript 订阅频道。即

$(function() {
  var faye = new Faye.Client('http://localhost:9292/faye');
    faye.subscribe("/messages/new", function(data) {
    eval(data);
  });
});

参考 - http://railscasts.com/episodes/260-messaging-with-faye

[已解决]

faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45)
faye_server.get_client.publish('/foo', data )