Browse Source

fix: remove WebSocketFlv support

pull/6/head
halwu(吴浩麟) 8 years ago
parent
commit
9fa3540360
  1. 1
      README.md
  2. 31
      main.go
  3. 6
      protocol/httpflv/writer.go
  4. 73
      protocol/websocketflv/server.go

1
README.md

@ -7,7 +7,6 @@ live streaming server write in pure go, simple efficient and can run in any plat @@ -7,7 +7,6 @@ live streaming server write in pure go, simple efficient and can run in any plat
- [x] AMF
- [x] HLS
- [x] HTTP-FLV
- [ ] WebSocket-FLV
#### File container
- [x] FLV
- [x] TS

31
main.go

@ -9,14 +9,12 @@ import ( @@ -9,14 +9,12 @@ import (
"github.com/gwuhaolin/livego/protocol/hls"
"github.com/gwuhaolin/livego/protocol/httpflv"
"github.com/gwuhaolin/livego/protocol/httpopera"
"github.com/gwuhaolin/livego/protocol/websocketflv"
)
var (
rtmpAddr = flag.String("rtmp-addr", ":1935", "RTMP server listen address")
httpFlvAddr = flag.String("http-flv-addr", ":7001", "HTTP-FLV server listen address")
websocketFlvAddr = flag.String("websocket-flv-addr", ":7002", "HTTP-FLV server listen address")
hlsAddr = flag.String("hls-addr", ":7003", "HLS server listen address")
httpFlvAddr = flag.String("httpflv-addr", ":7001", "HTTP-FLV server listen address")
hlsAddr = flag.String("hls-addr", ":7002", "HLS server listen address")
operaAddr = flag.String("manage-addr", ":8080", "HTTP manage interface server listen address")
)
@ -38,7 +36,7 @@ func startHls() *hls.Server { @@ -38,7 +36,7 @@ func startHls() *hls.Server {
log.Println("HLS server panic: ", r)
}
}()
log.Println("HLS Listen On", *hlsAddr)
log.Println("HLS listen On", *hlsAddr)
hlsServer.Serve(hlsListen)
}()
return hlsServer
@ -73,25 +71,7 @@ func startHTTPFlv(stream *rtmp.RtmpStream) { @@ -73,25 +71,7 @@ func startHTTPFlv(stream *rtmp.RtmpStream) {
log.Println("HTTP-FLV server panic: ", r)
}
}()
log.Println("HTTP-FLV Listen On", *httpFlvAddr)
hdlServer.Serve(flvListen)
}()
}
func startWebSocketFlv(stream *rtmp.RtmpStream) {
flvListen, err := net.Listen("tcp", *websocketFlvAddr)
if err != nil {
log.Fatal(err)
}
hdlServer := websocketflv.NewServer(stream)
go func() {
defer func() {
if r := recover(); r != nil {
log.Println("WebSocket-FLV server panic: ", r)
}
}()
log.Println("WebSocket-FLV Listen On", *websocketFlvAddr)
log.Println("HTTP-FLV listen On", *httpFlvAddr)
hdlServer.Serve(flvListen)
}()
}
@ -109,7 +89,7 @@ func startHTTPOpera(stream *rtmp.RtmpStream) { @@ -109,7 +89,7 @@ func startHTTPOpera(stream *rtmp.RtmpStream) {
log.Println("HTTP-Operation server panic: ", r)
}
}()
log.Println("HTTP-Operation Listen On", *operaAddr)
log.Println("HTTP-Operation listen On", *operaAddr)
opServer.Serve(opListen)
}()
}
@ -126,7 +106,6 @@ func main() { @@ -126,7 +106,6 @@ func main() {
stream := rtmp.NewRtmpStream()
hlsServer := startHls()
startHTTPFlv(stream)
startWebSocketFlv(stream)
//startHTTPOpera(stream)
startRtmp(stream, hlsServer)
}

6
protocol/httpflv/writer.go

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
package httpflv
import (
"io"
"time"
"errors"
"log"
"net/http"
"github.com/gwuhaolin/livego/utils/uid"
"github.com/gwuhaolin/livego/protocol/amf"
"github.com/gwuhaolin/livego/av"
@ -23,11 +23,11 @@ type FLVWriter struct { @@ -23,11 +23,11 @@ type FLVWriter struct {
buf []byte
closed bool
closedChan chan struct{}
ctx io.Writer
ctx http.ResponseWriter
packetQueue chan av.Packet
}
func NewFLVWriter(app, title, url string, ctx io.Writer) *FLVWriter {
func NewFLVWriter(app, title, url string, ctx http.ResponseWriter) *FLVWriter {
ret := &FLVWriter{
Uid: uid.NewId(),
app: app,

73
protocol/websocketflv/server.go

@ -1,73 +0,0 @@ @@ -1,73 +0,0 @@
package websocketflv
import (
"strings"
"net"
"net/http"
"log"
"github.com/gwuhaolin/livego/av"
"github.com/gwuhaolin/livego/protocol/httpflv"
"github.com/gorilla/websocket"
)
type Server struct {
handler av.Handler
}
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
func NewServer(h av.Handler) *Server {
return &Server{
handler: h,
}
}
func (server *Server) Serve(listener net.Listener) error {
mux := http.NewServeMux()
mux.HandleFunc("/", server.handleConn)
http.Serve(listener, mux)
return nil
}
func (server *Server) handleConn(w http.ResponseWriter, r *http.Request) {
defer func() {
if r := recover(); r != nil {
log.Println("websocket flv handleConn panic: ", r)
}
}()
url := r.URL.String()
u := r.URL.Path
if pos := strings.LastIndex(u, "."); pos < 0 || u[pos:] != ".flv" {
http.Error(w, "invalid path", http.StatusBadRequest)
return
}
path := strings.TrimSuffix(strings.TrimLeft(u, "/"), ".flv")
paths := strings.SplitN(path, "/", 2)
if len(paths) != 2 {
http.Error(w, "invalid path", http.StatusBadRequest)
return
}
log.Println("url:", u, "path:", path, "paths:", paths)
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
conn.Close()
return
}
writer, err := conn.NextWriter(websocket.BinaryMessage)
if err != nil {
conn.Close()
return
}
flvWriter := httpflv.NewFLVWriter(paths[0], paths[1], url, writer)
server.handler.HandleWriter(flvWriter)
flvWriter.Wait()
}
Loading…
Cancel
Save