會是怎樣流媒體文件的內容網頁的最簡單的方法,因爲它得到更新。內容傳輸到軌道視圖
我目前有一個.txt
文件,它在腳本運行時不斷更新,我希望在更新用戶時在頁面上顯示該文件。
有沒有一個簡單的寶石或技術來實現這一目標?還是有一個很好的純Ruby方法?
我的第一個想法是使用某種AJAX請求來返回文件的差異,但我覺得這將是一個不好的方法。
會是怎樣流媒體文件的內容網頁的最簡單的方法,因爲它得到更新。內容傳輸到軌道視圖
我目前有一個.txt
文件,它在腳本運行時不斷更新,我希望在更新用戶時在頁面上顯示該文件。
有沒有一個簡單的寶石或技術來實現這一目標?還是有一個很好的純Ruby方法?
我的第一個想法是使用某種AJAX請求來返回文件的差異,但我覺得這將是一個不好的方法。
我用Celluloid's Reel by Tony Arcieri來完成這個。
我在後臺運行,這(在這一部分獲得了很多的幫助下Adam Dalton):
my_reel.rb
require 'reel'
CONNECTIONS = []
Reel::Server.supervise("0.0.0.0", 5000) do |connection|
while request = connection.request
case request
when Reel::Request
puts "Client requested: #{request.method} #{request.url} #{request.body}"
CONNECTIONS.each do |c|
c << request.body
end
request.respond :ok, 'YES! YOU GOT IT!'
when Reel::WebSocket
puts "Client made a WebSocket request to: #{request.url}"
CONNECTIONS << request
break
end
end
end
sleep
然後我寫了一個命令行腳本來發送POST請求到Reel服務器。有很多的幫助,從Writing Ruby Scripts That Respect Pipelines by Jesse Storimer。
〜/斌/ serve_it_up
#!/usr/bin/env ruby
require 'httparty'
ARGF.each_line do |line|
output_line = line.chop
HTTParty.post 'http://localhost:5000', body: output_line
end
然後,使其工作,我的Rails應用程序使用Sidekiq(bundle exec sidekiq
),並在後臺運行一個腳本單擊按鈕時,它發送輸出到一個文件,output.txt
。所以我運行一個強制尾部並將其輸出到我的命令行腳本中。
tail -f output.txt | serve_it_up
在我的web應用程序,我有一些JavaScript(的CoffeeScript在這種情況下)掛接到網絡插座,並把頁面上的輸出:所以任何時間都output.txt的
connection = new WebSocket('ws://localhost:5000')
connection.onmessage = (event) ->
$('#prompt').append(event.data + '<br/>')
prompt = document.getElementById('prompt')
prompt.scrollTop = prompt.scrollHeight
的變化,它會不會從tail -f
輸出,並把它放在網頁瀏覽器。我也風格的#prompt
DIV具有有限的高度,我把它一直滾動至底部。
這裏是它的風格:
#prompt {
font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;
height: 200px;
overflow: auto;
}
你可以考慮使用像王菲或寶石private_pub(這讓王菲通道專用),它允許您利用網絡插座或長輪詢的新數據推送到客戶端。 Github頁面上還有很多文檔,還有RailsCast。
在您的應用或腳本中,您可以發佈到服務器,將新數據推送到所有訂閱的頻道。
謝謝你,我會看看,並根據結果更新你的結果。 – ardavis 2013-03-27 17:37:38
@ardavis你是怎麼做到的? – chrisbulmer 2013-03-28 16:32:52
赫姆,你想從.txt文件更新的網頁表單字段的值? – 2013-03-27 17:26:05
我沒有一種形式,現在只是一個簡單的div。我希望它始終包含文件中的信息,即使它發生變化。讓我知道我是否可以提供進一步的信息。 – ardavis 2013-03-27 17:27:16
好的!但是你想更新你所說的網頁,對吧? – 2013-03-27 17:29:12