Rails - Faye推送数据

时间:2015-08-11 12:42:46

标签: ruby-on-rails ruby sockets faye

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

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

我找到了类似的东西:

engine.publish(message, channels)

但不知道如何使用它

2 个答案:

答案 0 :(得分:1)

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

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

从控制器广播消息/数据。即

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

答案 1 :(得分:-1)

[解决]

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