主頁(yè) > 知識(shí)庫(kù) > ruby實(shí)現(xiàn)的一個(gè)異步文件下載HttpServer實(shí)例

ruby實(shí)現(xiàn)的一個(gè)異步文件下載HttpServer實(shí)例

熱門(mén)標(biāo)簽:巫師3地圖標(biāo)注魔力之所 外呼線(xiàn)路從哪里出來(lái)的 中牟外呼系統(tǒng)違法嗎 天津外呼系統(tǒng)怎么收費(fèi) 漯河電銷(xiāo) 征服者企業(yè)地圖標(biāo)注 淮安自動(dòng)外呼系統(tǒng)供應(yīng)商 AI電銷(xiāo)機(jī)器人 線(xiàn)路 柯城手機(jī)地圖如何做地圖標(biāo)注

1.使用ruby eventmachine和em-http-server gem,完成一個(gè)簡(jiǎn)單的提供文件下載功能的HttpServer

2.使用了EM的FileStreamer來(lái)異步發(fā)送文件,發(fā)送文件時(shí)先組裝了header,然后調(diào)用FileStreamer

require 'rubygems'
require 'eventmachine'
require 'em-http-server'

class HTTPHandler  EM::HttpServer::Server
 attr_accessor :filename, :filesize, :path

 def process_http_request
 #send file async
 if @http_request_method.to_s =~ /GET/  @http_request_uri.to_s.end_with?(filename)
  send_data "HTTP/1.1 200 OK\n"
  send_data "Server: XiaoMi\n"
  send_data "Connection: Keep-Alive\n"
  send_data "Keep-Alive: timeout=15\n"
  send_data "Content-Type: application/octet-stream\n"
  send_data "Content-Disposition: filename='#{filename}'\n"
  send_data "Content-Length: #{filesize}\n"
  send_data "\n"

  streamer = EventMachine::FileStreamer.new(self, path)
  streamer.callback {
  # file was sent successfully
  close_connection_after_writing
  }
 else
  response = EM::DelegatedHttpResponse.new(self)
  response.status = 200
  response.content_type 'text/html'
  response.content = "Package HttpServerbr>usage: wget http://host:port/#{filename}"
  response.send_response
 end
 end

end

EM::run do
 path = '/tmp/aaa.tar.gz'
 EM::start_server("0.0.0.0", 8080, HTTPHandler) do |conn|
 conn.filename = File.basename(path)
 conn.filesize = File.size(path)
 conn.path = path
 end
end

您可能感興趣的文章:
  • Ruby中使用多線(xiàn)程隊(duì)列(Queue)實(shí)現(xiàn)下載博客文章保存到本地文件
  • Ruby中使用mechanize批量下載校內(nèi)網(wǎng)相冊(cè)照片
  • 比較不錯(cuò)的關(guān)于ruby的電子書(shū)下載地址集合
  • windows和linux下Ruby的下載與安裝
  • Ruby使用eventmachine為HTTP服務(wù)器添加文件下載功能

標(biāo)簽:西雙版納 甘孜 克拉瑪依 大慶 內(nèi)江 河池 南昌 棗莊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ruby實(shí)現(xiàn)的一個(gè)異步文件下載HttpServer實(shí)例》,本文關(guān)鍵詞  ruby,實(shí)現(xiàn),的,一個(gè),異步,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ruby實(shí)現(xiàn)的一個(gè)異步文件下載HttpServer實(shí)例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于ruby實(shí)現(xiàn)的一個(gè)異步文件下載HttpServer實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章