多路复用流库 Spdystream

Apache
Google Go
Linux
Docker
2015-05-12
大胖森

Spdystream 是使用 spdy 的多路复用流库。

用途示例:

Client example (connecting to mirroring server without auth)

package main

import (
    "fmt"
    "github.com/docker/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)

package main

import (
    "github.com/docker/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)
    }
}


加载中

评论(0)

暂无评论

暂无资讯

暂无问答

chromium net库设计

# 总览 网络栈主要地是一个单线程跨平台的库,主要负责资源获取。它的主要接口是`URLRequest`和`URLRequestContext`。`URLRequest`, 正如它的名字所表明的那样,表示一个[URL](http://en.w...

2016/08/10 13:45
284
0
OkHttp完全解析(三)并发

HttpURLConnection 的API是阻塞是的API,通过创建一个写入阻塞发送一个请求,通过一个读取阻塞接受响应。 [源码分析:4.2] 框架连接FramedConnection 4.1 阻塞式API 阻塞式API因其自上而下的...

2016/05/13 19:08
27
2

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部