Rails faye实时通知系统

时间:2011-10-07 11:45:15

标签: ruby-on-rails notifications faye

我正在尝试构建一个简单的基于实时的通知系统,这样我就可以在某些动作上执行某个javascript。这个想法相对简单,虽然我在实现它时遇到了问题,但是在阅读完文档之后不确定这个问题。菲。

目前的想法是

  • 每个登录用户有一个独特的faye频道,因此您可以将某个操作(弹出窗口,设置文字)推送到某个特定用户
  • 我的应用布局中的一个div,我可以将文字写入
  • 我的应用中包含弹出式布局的一个div

现在我已经看过关于faye的railscast教程,但是ryan是从控制器/动作方法创建的。我不想在db中插入东西,只需从任何地方调用JS函数(构建一个应用程序助手我认为是个好主意),我只想做一些像“执行javascript'set_text'”这样的事情并执行javascript'show_popup'

使用Faye构建此类功能的最佳方式是什么,基本上我只需要

  • 在某个Faye频道上执行javascript功能

完成弹出和短信。 有点丢失这个人可以指出我正确的方向或可能已经建立了这样的功能? thx in advanche!

1 个答案:

答案 0 :(得分:3)

在服务器端,你可以这样做(这需要eventmachine):

client = Faye::Client.new('http://localhost:9292/faye')
client.publish('/notifications/1', 'alert(1);')

或通过HTTP:

message = {:channel => '/notifications/1', :data => 'alert(1);'}
uri = URI.parse("http://localhost:9292/faye")
Net::HTTP.post_form(uri, :message => message.to_json)

然后在客户端,您可以对数据执行任何操作。

var client = new Faye.Client('http://localhost:9292/faye');
client.subscribe('/notifications/1', function(data) {
  eval(data);
});

只需将alert(1);替换为您要执行的任何JS。