国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

ruby實現的一個異步文件下載HttpServer實例

2020-10-29 19:44:38
字體:
來源:轉載
供稿:網友

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

2.使用了EM的FileStreamer來異步發送文件,發送文件時先組裝了header,然后調用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 HttpServer<br>usage: wget http://host:port/#{filename}"  response.send_response end endendEM::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 endend

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 佛教| 华蓥市| 南皮县| 神农架林区| 叙永县| 瓦房店市| 寿宁县| 和林格尔县| 丰台区| 河曲县| 绍兴市| 平原县| 平阳县| 吉水县| 丰城市| 乌鲁木齐县| 安徽省| 泊头市| 聂荣县| 临安市| 宁陵县| 怀仁县| 陆河县| 平和县| 佛教| 罗山县| 鹤庆县| 寻乌县| 宣城市| 玛纳斯县| 修水县| 阳泉市| 买车| 正宁县| 通化县| 左贡县| 庆安县| 凤冈县| 山阳县| 潞西市| 新竹市|