4

我有个问题。我正在使用 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 完成的。)

我需要以什么方式思考?提前致谢!

4

1 回答 1

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 %>

这对我很有用。

于 2012-02-24T21:27:45.233 回答