Sha256: ff5e9b3bb076c014166e7bf8590fcb2eddc55e0ed105e0ff876e98258c01edf4

Contents?: true

Size: 913 Bytes

Versions: 1

Compression:

Stored size: 913 Bytes

Contents

# encoding: utf-8

require 'httpkit'

class EchoServer
  def serve(request, served)
    response = streaming_response
    served.fulfill(response)

    serialize(request, response)
    request.closed { response.close }
  end

  private

  def streaming_response
    HTTPkit::Response.new(200, { 'Content-Type' => 'text/plain' },
                          HTTPkit::Body.new)
  end

  def serialize(request, response)
    writer     = response.body.method(:write)
    serializer = HTTPkit::Serializer.new(request, writer)
    serializer.serialize
  end
end

HTTPkit.start do
  HTTPkit::Server.start(address:  ENV.fetch('ADDRESS', '127.0.0.1'),
                        port:     ENV.fetch('PORT', 3000).to_i,
                        handlers: [HTTPkit::Server::KeepAliveHandler.new,
                                   EchoServer.new])

  Signal.trap(:INT)  { HTTPkit.stop }
  Signal.trap(:TERM) { HTTPkit.stop }
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
httpkit-0.6.0.pre.5 examples/echo_server.rb