Sha256: 813fc0d9e283a3fe9c77acd67383277d31762a69e4ab8a3e5fcc2d49d99e4db4
Contents?: true
Size: 764 Bytes
Versions: 84
Compression:
Stored size: 764 Bytes
Contents
require 'http/parser' require 'socket' def handle_client(socket) pending_requests = [] parser = Http::Parser.new parser.on_message_complete = proc { pending_requests << parser } while (data = socket.recv(8192)) parser << data write_response(socket) while pending_requests.shift end rescue IOError, SystemCallError => e # ignore ensure socket.close end def write_response(socket) status_code = "200 OK" data = "Hello world!\n" headers = "Content-Type: text/plain\r\nContent-Length: #{data.bytesize}\r\n" socket.write "HTTP/1.1 #{status_code}\r\n#{headers}\r\n#{data}" end server = TCPServer.open(1235) puts "pid #{Process.pid} threaded listening on port 1235" while socket = server.accept Thread.new { handle_client(socket) } end
Version data entries
84 entries across 84 versions & 1 rubygems