class YNHandleRequest
处理http请求 create by yan
Public Class Methods
new(socket_queue)
click to toggle source
# File lib/yn_handle_request.rb, line 11 def initialize(socket_queue) @socket_queue=socket_queue end
Public Instance Methods
handle()
click to toggle source
# File lib/yn_handle_request.rb, line 15 def handle loop do begin client = @socket_queue.take puts "-----------------------------------" _method,path = client.gets.split puts "url: #{path}" puts "method: #{_method}" headers={} while line = client.gets.split(' ',2) break if line[0]=="" headers[line[0].chop] = line[1].strip end data = "" servlet_url = "" if _method.upcase == 'POST' data = client.read(headers["Content-Length"].to_i) servlet_url = path elsif _method.upcase == 'GET' if path.include? '?' # 带参数 data = path[(path.index('?')+1)..path.length] servlet_url = path[0...path.index('?')] else data = "" servlet_url = path end end request = YNRequest.new(data) puts "parameter: #{request.hash}" util = YNRouteUtil.new route = util.get_method(servlet_url) task = YNTask.new(request) route = "default" if route == nil || route.empty? puts "route: #{route}" _result = task.send(route) #动态执行方法 client.write(_result) rescue Exception => e puts e.send(:caller) ensure client.close end end end