Skip to content

moby/spdystream

Folders and files

NameName
Last commit message
Last commit date

Latest commit

77eb080 · Jul 23, 2024
Jun 28, 2024
Jan 25, 2021
Jan 25, 2021
Jun 12, 2014
Jan 25, 2021
Jan 27, 2021
Jan 25, 2021
Jan 27, 2021
Jun 28, 2024
Jun 25, 2024
Jan 25, 2021
Jan 27, 2021
Jan 27, 2021
Jan 25, 2021
Jun 21, 2024
Jan 16, 2024
Jan 25, 2021

Repository files navigation

SpdyStream

A multiplexed stream library using spdy

Usage

Client example (connecting to mirroring server without auth)

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)

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.