Ruby 构建支持多线程的 Web 服务器

来源:互联网 发布:全国各地地址的数据库 编辑:程序博客网 时间:2024/04/30 11:01

[代码] ruby代码

 
01require 'thread'
02require 'socket'
03 
04class RequestHandler
05    def initialize(session)
06    @session = session
07    end
08 
09    def process
10        while @session.gets.chop.length != 0
11        end
12        @session.puts "HTTP/1.1 200 OK"
13        @session.puts "content-type: text/html"
14        @session.puts "" # End of headers
15        @session.puts "<html>"
16        @session.puts "   <body>"
17        @session.puts "     <center>"
18        @session.puts "        <b>#{Time.now}</b>"
19        @session.puts "     <center>"
20        @session.puts "   </body>"
21        @session.puts "</html>"
22        @session.close
23    end
24end
25 
26server = TCPServer.new("0.0.0.0""8888")
27$currentRequests = []
28$requestedToShutDown false
29 
30while !$requestedToShutDown
31    session = server.accept
32    thread = Thread.new(session) do |newSession|
33        RequestHandler.new(newSession).process
34    end
35    $currentRequests.push(thread)
36end
37$currentRequests.each { |t| Thread.join(t) }