国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙南县| 友谊县| 资兴市| 景德镇市| 海晏县| 喀什市| 龙井市| 广东省| 东城区| 赤城县| 运城市| 宜君县| 宣威市| 林口县| 黄陵县| 云浮市| 赞皇县| 孙吴县| 桃江县| 扶风县| 洛川县| 晋宁县| 罗甸县| 长宁县| 钟山县| 台山市| 成武县| 苍南县| 永吉县| 龙川县| 西丰县| 上思县| 巴彦淖尔市| 和平县| 曲松县| 会东县| 治县。| 湟源县| 颍上县| 宝兴县| 渭南市|