status-go/vendor/github.com/quic-go/webtransport-go
Richard Ramos 28229faec0 chore: bump libp2p related dependencies 2023-06-30 14:23:08 -04:00
..
.gitignore chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
LICENSE chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
README.md chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
client.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
codecov.yml chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
errors.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
protocol.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
server.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
session.go chore: use go 1.19 and bump go-libp2p (#3371) 2023-04-07 20:23:07 +02:00
session_manager.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
stream.go chore: bump libp2p related dependencies 2023-06-30 14:23:08 -04:00
streams_map.go chore: upgrade go-waku to v0.5 (#3213) 2023-02-22 17:58:17 -04:00
version.json chore: bump libp2p related dependencies 2023-06-30 14:23:08 -04:00

README.md

webtransport-go

PkgGoDev Code Coverage

webtransport-go is an implementation of the WebTransport protocol, based on quic-go. It currently implements draft-02 of the specification.

Running a Server

// create a new webtransport.Server, listening on (UDP) port 443
s := webtransport.Server{
    H3: http3.Server{Addr: ":443"},
}

// Create a new HTTP endpoint /webtransport.
http.HandleFunc("/webtransport", func(w http.ResponseWriter, r *http.Request) {
    conn, err := s.Upgrade(w, r)
    if err != nil {
        log.Printf("upgrading failed: %s", err)
        w.WriteHeader(500)
        return
    }
    // Handle the connection. Here goes the application logic. 
})

s.ListenAndServeTLS(certFile, keyFile)

Now that the server is running, Chrome can be used to establish a new WebTransport session as described in this tutorial.

Running a Client

var d webtransport.Dialer
rsp, conn, err := d.Dial(ctx, "https://example.com/webtransport", nil)
// err is only nil if rsp.StatusCode is a 2xx
// Handle the connection. Here goes the application logic.