headersframe, ok := frame.(*http2.HeadersFrame)
if ok {
println("headers frame detected")
if headersframe.StreamEnded() {
// write HEADERS frame with 2 headers
hbytes := make([]byte, 0, 2048)
hbuffer := bytes.NewBuffer(hbytes)
hfield1 := hpack.HeaderField{
Name: ":status",
Value: "200",
Sensitive: false,}
hfield2 := hpack.HeaderField{
Name: "content-type",
Value: "application/json",
Sensitive: false,}
encoder := hpack.NewEncoder(hbuffer)
err := encoder.WriteField(hfield1)
err = encoder.WriteField(hfield2)
if err != nil {
println(err.Error())
}
hfp := http2.HeadersFrameParam{
StreamID: frame.Header().StreamID,
BlockFragment: hbuffer.Bytes(),
EndStream: false,
EndHeaders: true,
}
err = framer.WriteHeaders(hfp)
if err != nil {
println(err.Error())
}
// write DATA frame
data := []byte("{}")
framer.WriteData(frame.Header().StreamID, true, data)
}
return
}