早就想寫 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。