Sha256: af4bb01a1b718b3cfdfa6f32ade741db9d775a5e8d67fd05f33215bddf8fc9df

Contents?: true

Size: 770 Bytes

Versions: 11

Compression:

Stored size: 770 Bytes

Contents

# frozen_string_literal: true

require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'h1p'
  gem 'polyphony', path: '.'
end

require 'polyphony'
require 'h1p'

def handle_client(conn)
  spin do
    parser = H1P::Parser.new(conn, :server)

    while true # assuming persistent connection
      headers = parser.parse_headers
      break unless headers

      parser.read_body unless parser.complete?

      conn << "HTTP/1.1 200 OK\r\nContent-Length: 14\r\n\r\nHello, world!\n"
    end
  rescue Errno::ECONNRESET
    # ignore
  rescue H1P::Error
    puts 'Got invalid request, closing connection...'
  ensure
    conn.close rescue nil
  end
end

puts "Serving HTTP on port 1234..."
TCPServer.new('0.0.0.0', 1234).accept_loop { |c| handle_client(c) }

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
polyphony-1.4 examples/pipes/http_server.rb
polyphony-1.3 examples/pipes/http_server.rb
polyphony-1.2.1 examples/pipes/http_server.rb
polyphony-1.2 examples/pipes/http_server.rb
polyphony-1.1.1 examples/pipes/http_server.rb
polyphony-1.1 examples/pipes/http_server.rb
polyphony-1.0.2 examples/pipes/http_server.rb
polyphony-1.0.1 examples/pipes/http_server.rb
polyphony-1.0 examples/pipes/http_server.rb
polyphony-0.99.6 examples/pipes/http_server.rb
polyphony-0.99.5 examples/pipes/http_server.rb