Sha256: 1698b2f8c24b163ed17e38ea7fd6b8077ae00a8020b7c375b3bd9adff4287a17
Contents?: true
Size: 998 Bytes
Versions: 2
Compression:
Stored size: 998 Bytes
Contents
# frozen_string_literal: true require 'bundler/inline' gemfile do source 'https://rubygems.org' gem 'http_parser.rb' gem 'polyphony', path: '.' end require 'polyphony' require 'http_parser.rb' def handle_client(conn) spin do parser = Http::Parser.new done = false headers = nil parser.on_headers_complete = proc do |h| headers = h headers[':method'] = parser.http_method headers[':path'] = parser.request_url end parser.on_message_complete = proc { done = true } while true # assuming persistent connection conn.read_loop do |msg| parser << msg break if done end conn << "HTTP/1.1 200 OK\r\nContent-Length: 14\r\n\r\nHello, world!\n" done = false headers = nil end rescue Errno::ECONNRESET, Errno::EPIPE # ignore ensure parser = nil 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
polyphony-1.6 | examples/pipes/http_server2.rb |
polyphony-1.5 | examples/pipes/http_server2.rb |