webrick

    webrick源码分析——http请求

    23 Feb 2010

    http服务器的主要工作就是解析http请求,然后返回http应答。http请求从socket读入,就是一段特定格式的字符串,下面是访问huangzhimn.com首页的http请求

    GET ...
    Read More

    Tags 


    webrick源码分析──路由

    25 Jan 2010

    webrick的路由是由WEBrick::HTTPServer::MountTable定义的

    MountTable由@tab和@scanner组成,@tab是一个由script_name到Servlet的Hash,@scanner一个可以匹配所有script_name的正则表达式。其定义如下:

    class MountTable
      def initialize
        @tab = Hash.new
        compile
      end
    
      def [](dir)
        dir = normalize(dir)
        @tab[dir]
      end
    
      def []=(dir, val)
        dir = normalize(dir)
        @tab[dir] = val
        compile
        val
      end
    
      def delete(dir)
        dir = normalize(dir)
        res = @tab.delete(dir)
        compile
        res
      end
    
      def scan(path)
        @sc...
    Read More

    Tags 


    webrick源码分析──主要流程

    10 Jan 2010

    webrick作为ruby自带的一个http server,很适合拿来作为学习之用。首先来看看最简单的使用webrick的示例吧

    require 'webrick'
    
    server = WEBrick::HTTPServer.new({:Port => 3000, :DocumentRoot => '/home/flyerhzm/public_html'})
    
    ['INT', 'TERM'].each { |signal|
       trap(signal) { server.shutdown }
    }
    
    server.start

    这段代码主要是定义了http服务器监听3000端口,根目录在/home/flyerhzm/public_html下,在接收INT或TERM信号时,关闭服务器,然后启动服务器。

    我们分两部分来看,首先看看服务器初始化时做了些什么

    class GenericServer
      attr_reader :status, :config, :logger, :tokens, :listeners
    
      def initialize(config={}, defa...
    Read More

    Tags