2011-10-07 85 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