Sha256: c25bb0d0fe1c4d7d131d7cbac4a6b424bf323453792a64ebda6f4ea7514ae5e2

Contents?: true

Size: 554 Bytes

Versions: 6

Compression:

Stored size: 554 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
    client.read_loop { |data| parser << data }
    client.close
  end
end

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

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
polyphony-0.46.1 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.46.0 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.45.5 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.45.4 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.45.2 examples/performance/thread-vs-fiber/threaded_server.rb
polyphony-0.45.1 examples/performance/thread-vs-fiber/threaded_server.rb