2012-02-23 3 views
4

У меня вопрос. Я использовал faye для обновления части страницы для всех клиентов на этой странице. Но я смущаюсь. Как сделать обновление части страницы только для определенных пользователей. В моем случае я хочу уведомить пользователя о новом сообщении. Но я не знаю, как это сделать. Я знаю, как уведомлять всех людей на определенной странице. Например, в моей почтовой модели у меня есть создать JsКак оповестить только определенных пользователей на странице с помощью Faye?

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

также я был клиент Фей и код

$(function() { 
    var faye = new Faye.Client('http://localhost:9292/faye'); 
    faye.subscribe("/posts/new", function(data){ 
    eval(data); 
    }); 
}); 

(все это было сделано в соответствии к railscast.)

В каком смысле мне нужно думать? Заранее спасибо!

+1

Никто не знает ??? – Pavel

ответ

3

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

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

+0

Большое спасибо, это помогло мне с моим вопросом http://stackoverflow.com/questions/27139950/private-messages-with-faye-and-rails/27142335#27142335 –