五分彩玩法介绍:ruby实现的一个异步文件下载HttpServer实例

阅读:136次   时间:2017-08-12 21:19:40   字体:[ ]

香港三分彩 www.0gly8.cn 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 OKn"
  send_data "Server: XiaoMin"
  send_data "Connection: Keep-Aliven"
  send_data "Keep-Alive: timeout=15n"
  send_data "Content-Type: application/octet-streamn"
  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 //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

 相关阅读
关于本站 - 广告服务 - 会员指南 - 香港三分彩
Copyright ©2003-2017 香港三分彩 All Rights Reserved
  • 乌鲁木齐市天山区设红榜黑榜 每月考核辖区卫生 2018-12-18
  • [大笑]小撸的眼睛在滴血…… 2018-12-18
  • 专家提醒中药需严格炮制配伍 市民自行配服中药风险比较大 2018-12-08
  • 高温养生“关键词”:防暑、降温、补水 2018-12-03
  • 新生儿6种异常不用慌 2018-12-03
  • 中央政治局会议(十八届) 2018-11-24
  • 为英烈权益划出法治红线(纵横) 2018-11-24
  • “新时代 新梦想”网络媒体新春走基层 2018-11-18
  • 对爱因斯坦歧视言论,中国人的反应却出人意料 2018-10-27
  • 国际中医药文化节,一场现代艺术碰触传统文化的盛会 2018-10-27
  • 《人民日报》八种版别称谓的介绍 2018-10-15
  • 马克思为什么要重构个人所有制?只有达成责权利平滑对接才有真正的自由! 2018-10-14
  • 毕业当援疆 去祖国最需要的地方 2018-10-12
  • 2018“文化和自然遗产日非遗影像展”平遥落幕 2018-10-12
  • 北非花园迎来足球春天 遭遇"死亡之组"拒绝跑龙套 2018-10-09
  • 375| 411| 428| 538| 101| 229| 47| 476| 787| 515|