Как уведомить только определенных пользователей на странице с помощью Faye?

У меня есть вопрос. Я использовал 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);
  });
});

(все это делалось по рельскасту.)

Каким образом мне нужно думать? Заранее спасибо!


person Pavel    schedule 23.02.2012    source источник


Ответы (1)


Я нашел способ решить эту проблему. В этом поможет частный паб Gem (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 %>

и это отлично работает для меня.

person Pavel    schedule 24.02.2012
comment
большое спасибо, это помогло мне с моим вопросом рельсы"> stackoverflow.com/questions/27139950/ - person Alain Goldman; 26.11.2014