3/09/2008

Rails PUSH Server :Juggernaut 簡介

早就想寫 Juggernaut 的文章了,不過今天是第一次有時間寫。Push Server 技術就不再提了,想知道可以看我之前寫的文章。

簡介

Juggernaut 簡單的來說,是一個 Ruby Push Server 加上 Rails Plugin。

Push Server 取名就叫作 Juggernaut。

Juggernaut 的 Rails Plugin 裡面包含了一些 JS,跟Juggernaut 自己開發的 Flash Client。Push Server Client 端通常需要 Flash 來接收 Push Server Message,Juggernaut Flash Client 是使用 Flash 8 來作開發。支援 IE ,Firefox,Safari。Juggernaut 的強項在於跟 Ruby on Rails 整合良好,我們來看看怎麼使用。

安裝

1. Push Server 安裝

gem i juggernaut -y

2. Rails Plugin 安裝

ruby script/plugin install http://juggernaut.rubyforge.org/svn/trunk/juggernaut


設定

1. Juggernaut_hosts.yml

這裡很容易混淆,這個設定檔是 Rails Plugin 要看的設定檔,如果沒有設定 config/juggernaut_hosts.yml,會導致 Rails 無法啟動,所以必須要設定 config/juggernaut_hosts.yml。請先新增一個 config/juggernaut_hosts.yml ,輸入你的 Push Server 環境

:hosts:
- :port: 5001
:host: localhost
:environment: :production

port 是 push server port ,預設是 5001,Host 是 Push Server 的 IP ,Enviroment 是 Rails 環境。

2. juggernaut.yml

我們用 juggernaut 來產生 juggernaut push server 所需的設定檔。以下指令會產生一個 juggernaut config 檔,取名叫作 juggernaut.yml。

juggernaut -g juggernaut.yml

啟動

要啟動就是要啟動 Push Server ,還有 Ruby on Rails 。
1. 啟動 push server
我們啟動 juggernaut 這個 push server,並且讀取 config 檔。 預設 Push Server port 是 5001,可以到 juggernaut.yml 去修改。
juggernaut -c juggernaut.yml

範例

我們直接用 juggernaut 的範例,聊天室來確認是否 ok。在你的 controller 裡面創立兩個 function
def index

end

def send_data
render :juggernaut do |page|
page.insert_html :top, 'chat_data', "
  • #{h params[:chat_input]}
  • "

    end
    render :nothing => true
    end
    然後在 index view 裡面這樣寫
    <html>
    
    <head>
    <%= javascript_include_tag :defaults, :juggernaut %>
    <%=
    juggernaut %>
    head>
    <body>
    <%= form_remote_tag( :url => { :action => :send_data }, :complete => "$('chat_input').value = ''" ) %>
    <%= text_field_tag( 'chat_input', '', { :size => 20, :id => 'chat_input'} ) %>
    <%= submit_tag "Add" %>
    < /form>
    < id=""chat_data" style="list-style:none"> ul>
    body>
    html>
    這樣聊天室就完成啦,可以試試看玩玩看。

    對了,這個聊天室一開始有一堆 alert message,這是 Juggernaut 預設 Development 環境下會啟動 Debug Function ,只要 config 改成 Production 就不會出現一堆 alert message。

    沒有留言: