Ruby webserver—请求被服务时的回调

Ruby webserver—请求被服务时的回调,ruby,callback,webserver,Ruby,Callback,Webserver,有没有办法知道ruby Web服务器(webrick、evma_httpserver等)何时提供了请求服务 目标是提供2个静态文件,并在第二个文件提供给客户端后关闭服务器。 似乎我找不到与此相关的任何内容,因此欢迎任何指针。关闭服务器,然后提供第二个文件。下面是一个示例: server.rb require 'webrick' server = WEBrick::HTTPServer.new :Port => 8000, :DocumentRoot => '/' server.mo

有没有办法知道ruby Web服务器(webrick、evma_httpserver等)何时提供了请求服务

目标是提供2个静态文件,并在第二个文件提供给客户端后关闭服务器。
似乎我找不到与此相关的任何内容,因此欢迎任何指针。

关闭服务器,然后提供第二个文件。下面是一个示例:

server.rb

require 'webrick'

server = WEBrick::HTTPServer.new :Port => 8000, :DocumentRoot => '/'
server.mount_proc '/' do |req, res|
  # response with simple html body
  res.body = '
  <html>
    <head>
      <title>My Webpage</title>
      <!-- first file -->
      <link rel="stylesheet" href="/one_file.css" type="text/css">
      <!-- second file -->
      <link rel="stylesheet" href="/second_file.css" type="text/css">
    </head>
    <body>
      <h1>Hello world!</h1>
    </body>
  </html>'
end
server.mount_proc '/one_file.css' do |req, res|
  res.body = 'h1 { color: blue; }'
end
server.mount_proc '/second_file.css' do |req, res|
  res.body = 'h1 { color: red; }'
  puts "Shutdown server !"
  server.shutdown
end
server.start
两个文件都提供:


我可能错了,但我认为当客户端收到消息时,不会向服务器发送任何验证。服务器只知道它何时完成发送消息。我不确定,但由于它是一个tcp连接,我认为tcp确保在响应被视为“发送”之前已发送数据包。如果这是真的,我会很感兴趣。。我已经尝试过从嫙嫙嫙嫙嫙嫙嫙嫙嫙嫙嫙23257。在我的情况下,这并不是很关键,因为服务器和客户端在同一个本地子网中,丢失的数据包应该很少。这正是我所寻找的!非常感谢您提供了清晰有效的示例!!我的印象是,在响应块期间调用server.shutdown时,将不会提供响应,但未能验证这一信念。我现在已经尝试过了,即使响应稍微大一点,在服务器关闭之前也能成功地提供响应。再次感谢你帮助我:)
$~  ruby server.rb 
[2018-09-26 11:02:21] INFO  WEBrick 1.3.1
[2018-09-26 11:02:21] INFO  ruby 2.4.1 (2017-03-22) [x86_64-linux]
[2018-09-26 11:02:21] INFO  WEBrick::HTTPServer#start: pid=24224 port=8000
::1 - - [26/Sep/2018:11:02:24 MSK] "GET / HTTP/1.1" 200 262
- -> /
::1 - - [26/Sep/2018:11:02:24 MSK] "GET /one_file.css HTTP/1.1" 200 19
http://localhost:8000/ -> /one_file.css
::1 - - [26/Sep/2018:11:02:24 MSK] "GET /second_file.css HTTP/1.1" 200 18
http://localhost:8000/ -> /second_file.css
::1 - - [26/Sep/2018:11:02:24 MSK] "GET /favicon.ico HTTP/1.1" 200 262
http://localhost:8000/ -> /favicon.ico
[2018-09-26 11:02:25] INFO  going to shutdown ...
[2018-09-26 11:02:25] INFO  WEBrick::HTTPServer#start done.
$~