Как уведомить только определенных пользователей на странице, используя Faye? - PullRequest
4 голосов
/ 24 февраля 2012

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

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

1 Ответ

3 голосов
/ 25 февраля 2012

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

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

...