我有一个问题。我正在使用faye,在此页面上为所有客户更新部分页面。但我在挣扎。如何仅为特定用户更新页面的一部分。就我而言,我想通知用户有关新消息的信息。但我不知道该怎么做。我只知道如何在特定页面上通知所有人。例如,在我的帖子模型中,我创建了js
<% broadcast "/posts/new" do %>
$('#posts_list').prepend('<%= escape_javascript(render(@post)) %>');
$("#posts_list li:first").hide().fadeIn("slow");
<% end %>
和广播功能是
def broadcast(channel, &block)
message = {:channel => channel, :data => capture(&block)}
uri = URI.parse("http://localhost:9292/faye")
Net::HTTP.post_form(uri, :message => message.to_json)
end
我也有一个faye客户端和代码
$(function() {
var faye = new Faye.Client('http://localhost:9292/faye');
faye.subscribe("/posts/new", function(data){
eval(data);
});
});
(所有这些都是根据railscast完成的。)
我需要以什么方式思考?提前谢谢!
答案 0 :(得分:3)
我找到了解决这个问题的方法。宝石私人酒吧(https://github.com/ryanb/private_pub) 帮助做到这一点。 每个用户都有布局
<%= subscribe_to "/messages/#{current_user.id}" %>
当有人发送消息时在action.js(在我的情况下 - create.js)我做了这个
<% publish_to "/messages/#{@message.receiver.id}" do %>
...some js code, in my case jquery notification plugin usage
<% end %>
这对我很有用。