2011-10-07 63 views
2

我试着去建立一个简单的王菲基于实时通知系统,所以我可以执行某些actions.The想法有一定的JavaScript是比较简单的,虽然有问题,实现它林,不知道至极条路可走这个在阅读了faye的文档之后。Rails的王菲实时通知系统

目前的想法是

每个登录的用户,所以你可以在我的应用程序布局推的动作(弹出窗口,设置文本)到特定的用户只
  • 一个格
    • 一个独特王菲信道我可以写文字在我的应用程序
    • 一个DIV保存布局的弹出

    现在,我已经看到了关于王菲的railscast教程,但瑞恩从控制器/操作方法创建工作。我不想在数据库中插入东西,只是从任何地方(建立一个应用助手将是一个不错的主意,我认为)调用JS功能,我只是想做类似“执行JavaScript的‘set_text’”,并执行JavaScript的“show_popup”

    什么是建立与王菲有这样功能的最佳方式,基本上我只需要

    • 在一定王菲通道

    要完成执行一个JavaScript函数弹出和短信。 这个人有点失落可以指向正确的方向,或者已经建立了这样的功能? thx在advanche!

  • +0

    你为什么不想要使用一个控制器? – damienbrz

    +0

    我想要有灵活的解决方案,我可以从任何控制器调用,我上面的文本并不清楚那个抱歉。也许一个应用助手是最好的一段路要走,但仍然没有舒尔如何开始对上述实施:( – Rubytastic

    回答

    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); 
    }); 
    

    只需用您希望执行的任何JS代替alert(1);即可。

    +0

    THX我发现王菲少了几分对文档,并与剑圣我搬到因为这个剑圣(和工作示例应用程序)我仍然非常需要一个Rails Instant Messenger 1-1,或许你知道一个示例应用程序,或者你自己实现了它? – Rubytastic

    +0

    这很容易与Faye一起实现,你可以让每个用户订阅他们自己的频道,创建一个服务器端扩展到处理验证。我选择使用王菲,而不是剑圣,因为壶不允许客户端推送数据的原因。你必须做一个AJAX调用服务器和服务器推。我不能使用AJAX,因为我建立一个嵌入,能部件和AJAX不工作,所以我用王菲跨域。 – Engwan

    +0

    非常有趣的感谢,看来我到Digg略偏在王菲再次,完全是出于兴趣的世界卫生大会你跟法伊一起建造吗?谢谢 – Rubytastic