Skip to content

Instantly share code, notes, and snippets.

@Gerst20051
Forked from jeffkreeftmeijer/http_server.rb
Created December 27, 2024 21:57
Show Gist options
  • Save Gerst20051/d26d1dfec61f7c9b739d2e29c97a8b18 to your computer and use it in GitHub Desktop.
Save Gerst20051/d26d1dfec61f7c9b739d2e29c97a8b18 to your computer and use it in GitHub Desktop.

Revisions

  1. @jeffkreeftmeijer jeffkreeftmeijer revised this gist Nov 21, 2016. 1 changed file with 8 additions and 1 deletion.
    9 changes: 8 additions & 1 deletion http_server.rb
    Original file line number Diff line number Diff line change
    @@ -9,7 +9,14 @@
    request = session.gets
    puts request

    status, headers, body = app.call({})
    method, full_path = request.split(' ')
    path, query = full_path.split('?')

    status, headers, body = app.call({
    'REQUEST_METHOD' => method,
    'PATH_INFO' => path,
    'QUERY_STRING' => query
    })

    session.print "HTTP/1.1 #{status}\r\n"
    headers.each do |key, value|
  2. @jeffkreeftmeijer jeffkreeftmeijer revised this gist Nov 21, 2016. 1 changed file with 3 additions and 4 deletions.
    7 changes: 3 additions & 4 deletions http_server.rb
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,8 @@
    require 'socket'
    require 'rack'
    require 'rack/lobster'

    app = Proc.new do
    ['200', {'Content-Type' => 'text/html'}, ["Hello world! The time is #{Time.now}"]]
    end

    app = Rack::Lobster.new
    server = TCPServer.new 5678

    while session = server.accept
  3. @jeffkreeftmeijer jeffkreeftmeijer revised this gist Nov 21, 2016. 1 changed file with 14 additions and 4 deletions.
    18 changes: 14 additions & 4 deletions http_server.rb
    Original file line number Diff line number Diff line change
    @@ -1,14 +1,24 @@
    require 'socket'

    app = Proc.new do
    ['200', {'Content-Type' => 'text/html'}, ["Hello world! The time is #{Time.now}"]]
    end

    server = TCPServer.new 5678

    while session = server.accept
    request = session.gets
    puts request

    session.print "HTTP/1.1 200\r\n"
    session.print "Content-Type: text/html\r\n"
    session.print "\r\n"
    session.print "Hello world! The time is #{Time.now}"
    status, headers, body = app.call({})

    session.print "HTTP/1.1 #{status}\r\n"
    headers.each do |key, value|
    session.print "#{key}: #{value}\r\n"
    end
    session.print "\r\n"
    body.each do |part|
    session.print part
    end
    session.close
    end
  4. @jeffkreeftmeijer jeffkreeftmeijer revised this gist Nov 21, 2016. 1 changed file with 14 additions and 0 deletions.
    14 changes: 14 additions & 0 deletions http_server.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,14 @@
    require 'socket'
    server = TCPServer.new 5678

    while session = server.accept
    request = session.gets
    puts request

    session.print "HTTP/1.1 200\r\n"
    session.print "Content-Type: text/html\r\n"
    session.print "\r\n"
    session.print "Hello world! The time is #{Time.now}"

    session.close
    end
  5. @jeffkreeftmeijer jeffkreeftmeijer created this gist Nov 21, 2016.
    8 changes: 8 additions & 0 deletions tcp_client.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,8 @@
    require 'socket'
    server = TCPSocket.new 'localhost', 5678

    while line = server.gets
    puts line
    end

    server.close
    7 changes: 7 additions & 0 deletions tcp_server.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    require 'socket'
    server = TCPServer.new 5678

    while session = server.accept
    session.print "Hello world! The time is #{Time.now}"
    session.close
    end