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

本文介绍了一个使用Ruby编写的简易HTTP服务器实现。该服务器通过监听指定端口接收客户端请求,并返回包含当前时间的简单HTML页面。文章展示了如何利用Ruby标准库中的Thread和Socket模块来创建多线程服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[代码] ruby代码

 
01 require 'thread'
02 require 'socket'
03 
04 class 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 
26 server = TCPServer.new("0.0.0.0""8888")
27 $currentRequests = []
28 $requestedToShutDown false
29 
30 while !$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) }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值