mirror of
https://github.com/aler9/gortsplib
synced 2025-10-08 16:40:09 +08:00
new server structure
This commit is contained in:
61
examples/server.go
Normal file
61
examples/server.go
Normal file
@@ -0,0 +1,61 @@
|
||||
// +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 {}
|
||||
}
|
Reference in New Issue
Block a user