麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产午夜精品理论片a级探花 | 久久久一区二区精品 | 中文字幕电影免费播放 | 亚洲精中文字幕二区三区 | 91短视频免费 | 青青操国产 | 欧美日韩中文字幕在线 | 激情宗合 | 国产精品欧美日韩一区二区 | 久久影院午夜 | 欧美日韩在线看片 | 欧美日韩视频第一页 | 视频一区二区视频 | 国产乱淫av一区二区三区 | 一二区电影 | 91女上位 在线播放 性欧美日本 | 九九热视频这里只有精品 | 成人男女啪啪免费观看网站四虎 | 日韩黄色影视 | 久草最新网址 | 黄网站进入 | 欧美日本日韩 | 国产成人高清在线 | 欧美成人午夜一区二区三区 | 91九色免费视频 | 一级黄片毛片免费看 | 欧美成人午夜精品久久久 | 亚洲一区二区三区日本久久九 | 在线视频 日韩 | av不卡毛片 | jizzjizzjizzjizz国产| 久精品国产 | 美国av片在线观看 | 在线观看福利网站 | 香蕉久久久久久 | 性欧美xxxx免费岛国不卡电影 | 女教师~淫辱の动漫在线 | 日本特级a一片免费观看 | 欧美一极视频 | 久久免费精品视频 | 欧美日韩a∨毛片一区 |