`

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

阅读更多

[代码] 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
24 end
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)
36 end
37 $currentRequests.each { |t| Thread.join(t) }
2
0
分享到:
评论

相关推荐

    Ruby-CelluloidIO实现的Web服务器

    这种设计模式使得代码更加简洁、可读,同时避免了多线程中的竞态条件和死锁问题。 在Reel中,每个连接都被视为一个独立的Celluloid Actor,这样可以确保每个请求都能独立执行,互不干扰。当客户端发送请求时,Reel...

    Ruby-Puma一个Ruby的并发Web服务器

    总的来说,Puma是Ruby开发者构建高性能Web应用的理想选择,其并发性和高效性使其成为生产环境中的首选Web服务器。了解并掌握Puma的使用和配置,对于提升Ruby on Rails应用的性能和稳定性至关重要。通过深入学习Puma...

    jServe:一个用 Java 构建的轻量级多线程 Web 服务器

    jServe 是一个用 Java 构建的多线程 Web 服务器,它帮助我在我喜欢编写的真实应用程序中学习 Java 概念和一般编程。 我知道 Web 服务器并不是什么新鲜事物,已经有很多很棒的服务器了,但这就是我想编写 jServe 的...

    Ruby-agoo一个用于Ruby的高性能HTTP服务器

    它采用了多线程模型,利用了Ruby的GVL(全局解释器锁)优化,实现了非阻塞I/O,从而提高了服务器的吞吐量和响应速度。agoo支持HTTP/1.1协议,并且具有WebSocket和SSE(Server-Sent Events)的支持,这使得它非常适合...

    为并发性而构建的Ruby / Rack Web服务器-Ruby开发

    Puma:为并发构建的Ruby Web服务器Puma是用于Ruby / Rack应用程序的简单,快速,多线程,高度并发的HTTP 1.1服务器。 为速度和并发性而构建的Puma流程要求Puma:为并发性而构建的Ruby Web服务器Puma是用于Ruby / ...

    nginx高性能web服务器.pdf

    与传统的多进程或线程模型不同,Nginx采用异步非阻塞I/O模型,能够处理大量并发连接,降低了CPU和内存资源的消耗。这一模型使得Nginx在高并发场景下表现出色,尤其适合处理静态文件请求和HTTP反向代理任务。 其次,...

    Puma Web服务器 v4.3.12.zip

    Puma是一款开源的多线程Web服务器,主要服务于Ruby应用,尤其是Ruby on Rails框架。它采用工作进程模型,通过并发处理多个请求来提高性能,避免了单线程服务器在高并发情况下的性能瓶颈。Puma v4.3.12是该软件的一个...

    Working with Ruby Threads

    - **Puma的线程池实现**:Puma是一个高性能的Ruby Web服务器,它使用了一个简单的线程池实现来处理并发请求。通过分析其实现细节,可以更好地理解如何在实际项目中应用线程池。 #### 结语 通过深入学习《Working ...

    puma:为并发性而构建的RubyRack Web服务器

    Puma:专为并发构建的Ruby Web服务器 Puma是用于Ruby / Rack应用程序的简单,快速,多线程,高度并发的HTTP 1.1服务器。 专为提高速度和并发性而设计 Puma使用C优化的Ragel扩展(继承自Mongrel)处理请求,该扩展以...

    Puma Web服务器 v5.6.8.zip

    它开源的源代码可以作为学习服务器架构和性能优化的实例,帮助理解如何构建一个高效的Web服务器。同时,源码分析也能提升编程技巧,尤其是对Ruby和多线程编程的理解。 在压缩包内的“说明.htm”文件中,通常会包含...

    Puma Web服务器 v6.4.2.zip

    通过分析其源代码,学生可以学习到如何构建高性能的Web服务器,了解多线程编程、事件驱动编程和服务器管理等方面的知识。此外,Puma的架构设计和优化策略也可以作为系统设计和性能调优的实例。 在压缩包中,"说明....

    Ruby-Wombat轻量级的RubyWeb爬虫

    - **性能优化**:Wombat支持多线程和并发抓取,以提高爬取速度。但过度并发可能导致服务器压力过大,应适当调整并发级别,确保不影响网站正常运行。 - **数据清洗**:提取的数据可能包含噪声或无效信息,因此在处理...

    Linux web服务器

    Linux操作系统以其稳定、安全和开源的特性,成为构建Web服务器的首选平台。MyWebServer是一个专为Linux设计的高性能、高并发http web服务器,它能够有效地处理大量同时连接请求,为用户提供高效稳定的服务。 ...

    JAVA.WEB服务.构建与运行

    1.10 多线程端点服务发布程序 27 1.11 下一章 30 第2章 全面了解wsdl 31 2.1 wsdl在web服务中的作用 31 2.2 wsdl文档结构 36 2.3 amazon e-commerce web服务 46 2.4 wsgen工具与jax-b工件(artifacts) 59 2.5 wsdl...

    Ruby-rubyinstall安装RubyJRubyRubiniusMagLevorMRuby

    Ruby是一种强大的、面向对象的脚本语言,广泛用于Web开发、服务器端编程和各种应用程序。在Ruby的世界里,管理不同的Ruby实现(如MRI、JRuby、Rubinius、MagLev和MRuby)是非常重要的,这有助于开发者根据项目需求...

    Java Web服务构建与运行(高清中文版).part2.rar

     1.10 多线程端点服务发布程序  1.11 下一章 第2章 全面了解WSDL  2.1 WSDL在Web服务中的作用  2.2 WSDL文档结构 36  2.3 Amazon E-Commerce Web服务  2.4 wsgen工具与JAX-B工件(Artifacts)  2.5 ...

    Ruby-LightIO是一个ruby网络库它结合了rubyfiber和快速IOeventloop

    LightIO特别适用于构建高性能的Web服务器、代理服务器、实时通信系统或者任何需要处理大量并发网络连接的场景。结合Ruby的简洁语法,开发者可以快速构建出高效、可扩展的网络应用。 总之,Ruby-LightIO是一个强大...

    Ruby-rubyserver标准文件协议的生产就绪实现

    Ruby服务器通过多线程、多进程或事件驱动(如Reactor模式)等方式实现并发。例如,Puma使用工作进程和线程池来处理请求,既利用了多核CPU,又避免了线程安全问题。 6. **性能优化**: 为了提高性能,Ruby服务器...

    Ruby 语法. Ruby 是一种开源的面向对象程序设计的服务器端脚本语言

    - **多线程**:虽然 Ruby 本身不支持原生多线程,但它提供了线程(Thread)模型来模拟并发执行。 - **性能优化**:对于性能敏感的应用,可以通过 C 扩展或者使用 JRuby 等替代解释器来提高效率。 - **测试框架**:Ruby...

    Ruby-極光Rails5專屬伺服器安裝包

    Passenger 5支持多进程和多线程模型,可以有效地管理Rails应用的实例,提高并发处理能力。它还简化了部署流程,允许开发者通过简单配置就能将应用集成到Nginx或Apache中。 3. **Nginx 1.10**: Nginx是一款高性能的...

Global site tag (gtag.js) - Google Analytics