我不知道如何从rails服务器发布一些数据,我想在js中做类似的事情
var publication = client.publish('channel', {data});
我找到了类似的东西:
engine.publish(message, channels)
但不知道如何使用它
答案 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);
});
});
答案 1 :(得分:-1)
[解决]
faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45)
faye_server.get_client.publish('/foo', data )