moby/spdystream
GitHub: moby/spdystream
一个基于 SPDY 协议的 Go 多路复用流库,允许在单个 TCP 连接上创建和管理多条独立数据流。
Stars: 149 | Forks: 60
# SpdyStream
一个使用 spdy 的多路复用流库
## 用法
客户端示例(连接到无需身份验证的镜像服务器)
```
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()
}
```
服务端示例(无需身份验证的镜像服务器)
```
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)
}
}
```
## 版权与许可
版权所有 2013-2021 Docker, inc。基于 [Apache 2.0 许可证](LICENSE) 发布。
标签:Go, Ruby工具, SPDY, 内核驱动, 多路复用, 日志审计, 网络协议, 网络库