Files
gortsplib/examples/server.go
2020-12-08 19:30:06 +01:00

62 lines
1.2 KiB
Go

// +build ignore
package main
import (
"fmt"
"strings"
"github.com/aler9/gortsplib"
"github.com/aler9/gortsplib/pkg/base"
)
type serverConnHandler struct {
}
func (sc *serverConnHandler) OnClose(err error) {
}
func (sc *serverConnHandler) OnRequest(req *base.Request) (*base.Response, error) {
switch req.Method {
case base.Options:
return &base.Response{
StatusCode: base.StatusOK,
Header: base.Header{
"Public": base.HeaderValue{strings.Join([]string{
string(base.Describe),
string(base.Announce),
string(base.Setup),
string(base.Play),
string(base.Record),
string(base.Pause),
string(base.Teardown),
}, ", ")},
},
}, nil
case base.Teardown:
return &base.Response{
StatusCode: base.StatusOK,
Header: base.Header{},
}, fmt.Errorf("terminated")
}
return &base.Response{
StatusCode: base.StatusBadRequest,
Header: base.Header{},
}, fmt.Errorf("unhandled method: %v", req.Method)
}
func (sc *serverConnHandler) OnFrame(id int, typ gortsplib.StreamType, buf []byte) {
}
func main() {
// create server
gortsplib.Serve(":8554", func(c *gortsplib.ServerConn) gortsplib.ServerConnHandler {
return &serverConnHandler{}
})
// wait forever
select {}
}