HTTP/2 implementation in golang using nghttp2 C library
Go C
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
demo
.gitignore
README.rst
cnghttp2.h
nghttp2.c
server.go
session.go
stream.go

README.rst

go-nghttp2

The experimental project to use nghttp2 C library from Go using cgo. Currently, server implementation is available.

How to run demo server

First, build and install nghttp2. Do git clone https://github.com/tatsuhiro-t/go-nghttp2.git and enter demo directory. Then run go run demo.go. It fires up HTTP/2 capable https server listening at port 3000. It also supports HTTP/1 connection.

nghttp2.Server only supports https HTTP/2 connection right now.

Example

package main

import (
        "github.com/tatsuhiro-t/go-nghttp2"
        "io"
        "log"
        "net/http"
)

func main() {
        var srv http.Server
        srv.Addr = "localhost:3000"

        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
                io.WriteString(w, "hello world")
        })
        // Set up srv so that if HTTP/2 is negotiated in TLS NPN,
        // connection is intercepted by nghttp2.Server.
        nghttp2.ConfigureServer(&srv, &nghttp2.Server{})

        log.Printf("Listening on " + srv.Addr)
        log.Fatal(srv.ListenAndServeTLS("server.crt", "server.key"))
}