Sha256: 85f6ff547eaab13cf8854eba34497c8d7538aef1d14dcbf063e212fbfb844e80

Contents?: true

Size: 614 Bytes

Versions: 9

Compression:

Stored size: 614 Bytes

Contents

require 'thread'
require 'http/parser'
require 'socket'

def handle_client(client)
  Thread.new do
    parser = Http::Parser.new
    parser.on_message_complete= proc do |env|
      status_code = 200
      data = "Hello world!\n"
      headers = "Content-Length: #{data.bytesize}\r\n"
      client.write "HTTP/1.1 #{status_code}\r\n#{headers}\r\n#{data}"
    end
    loop do
      while data = client.readpartial(8192) rescue nil
        parser << data
      end
    end
    client.close
  end
end

server = TCPServer.open(1234)
puts "Listening on port 1234"
while socket = server.accept
  handle_client(socket)
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
polyphony-0.23 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.22 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.21 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.20 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.19 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.17 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.16 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.15 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.14 examples/performance/thread-vs-fiber/threaded_server.rb