mirror of https://github.com/k3s-io/k3s
78 lines
1.2 KiB
Markdown
78 lines
1.2 KiB
Markdown
|
# SpdyStream
|
||
|
|
||
|
A multiplexed stream library using spdy
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
Client example (connecting to mirroring server without auth)
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/moby/spdystream"
|
||
|
"net"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
conn, err := net.Dial("tcp", "localhost:8080")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
spdyConn, err := spdystream.NewConnection(conn, false)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
go spdyConn.Serve(spdystream.NoOpStreamHandler)
|
||
|
stream, err := spdyConn.CreateStream(http.Header{}, nil, false)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
stream.Wait()
|
||
|
|
||
|
fmt.Fprint(stream, "Writing to stream")
|
||
|
|
||
|
buf := make([]byte, 25)
|
||
|
stream.Read(buf)
|
||
|
fmt.Println(string(buf))
|
||
|
|
||
|
stream.Close()
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Server example (mirroring server without auth)
|
||
|
|
||
|
```go
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"github.com/moby/spdystream"
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
listener, err := net.Listen("tcp", "localhost:8080")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
for {
|
||
|
conn, err := listener.Accept()
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
spdyConn, err := spdystream.NewConnection(conn, true)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
go spdyConn.Serve(spdystream.MirrorStreamHandler)
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Copyright and license
|
||
|
|
||
|
Copyright 2013-2021 Docker, inc. Released under the [Apache 2.0 license](LICENSE).
|