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

首頁 > 編程 > Ruby > 正文

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

2020-03-29 12:08:58
字體:
來源:轉載
供稿:網友

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

2.使用了EM的FileStreamer來異步發(fā)送文件,發(fā)送文件時先組裝了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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南开区| 丰台区| 油尖旺区| 长沙县| 平远县| 嘉兴市| 瑞金市| 江油市| 堆龙德庆县| 霞浦县| 衡东县| 临清市| 开原市| 邻水| 北京市| 普兰县| 石嘴山市| 尚义县| 双流县| 太谷县| 浏阳市| 通化县| 察哈| 桐柏县| 巴楚县| 金堂县| 鄂温| 阜新市| 开平市| 芮城县| 炉霍县| 文化| 仪征市| 平乐县| 乌兰察布市| 高陵县| 牙克石市| 漾濞| 漳平市| 林西县| 新绛县|