Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

HTTP

A pure Crystal (but incomplete) implementation of the HTTP/2 protocol.

Requires OpenSSL 1.1 or above to support ALPN protocol negotiation, which is required for HTTP/2 over secure connections.

TODO

  • HPACK (including DH compression)

  • HTTP/2 connection, streams, frames, ...

  • HTTP/2 flow control (in/out, whole-connection, per-stream)

  • HTTP/2 priority

  • support HTTP/2 server connections

  • integrate transparently into HTTP::Server (broken)

  • integrate into HTTP::Server::Context (http version, server-push)

  • support HTTP/2 client connections

  • integrate into HTTP::Client

  • HPACK tests (HTTP/2 protocol, ...)

  • HTTP/2 server unit tests (HTTP/2 protocol, ...)

  • HTTP/2 client unit tests (HTTP/2 protocol, ...)

  • h2spec

Tests

Build and run the bin/server server, then launch h2spec.

$ make bin/server

Test against HTTP:

$ bin/server
$ ./h2spec -p 9292 -S

Test against HTTPS:

$ TLS=true bin/server
$ ./h2spec -p 9292 -k -t -S

RFC

HTTP/2

  • rfc7540 HTTP/2
  • rfc7541 HPACK Header Compression for HTTP/2

HTTP/1

  • rfc1945 HTTP/1.0 (informational)
  • rfc2616 HTTP/1.1 (obsolete)
  • rfc7230 HTTP/1.1 Message Syntax and Routing
  • rfc7231 HTTP/1.1 Semantics and Content
  • rfc7232 HTTP/1.1 Conditional Requests
  • rfc7233 HTTP/1.1 Range Requests
  • rfc7234 HTTP/1.1 Caching
  • rfc7235 HTTP/1.1 Authentification

About

HTTP/2 Protocol Implementation for the Crystal Language

Topics

Resources

License

Releases

No releases published

Contributors 4

  •  
  •  
  •  
  •  

Languages

You can’t perform that action at this time.