Browse Source

修改了go

worker
dexter 8 years ago
parent
commit
ad285c223c
  1. 28
      mse.go

28
mse.go

@ -1,26 +1,38 @@
package main
import (
"golang.org/x/net/websocket"
"flag"
"fmt"
"net/http"
"golang.org/x/net/websocket"
)
func main() {
var frontend,backend int
func main() {
var frontend, backend int
flag.IntVar(&frontend, "l", 8088, "frontend, serve websocket")
flag.IntVar(&backend, "b", 8080, "backend, which fetch flv stream from")
flag.Parse()
fmt.Println(fmt.Sprintf("Transmux http://:%v/* to ws://:%v/*", backend, frontend))
http.Handle("/", websocket.Handler(func(c *websocket.Conn){
http.Handle("/", websocket.Handler(func(c *websocket.Conn) {
r := c.Request()
url := fmt.Sprintf("http://127.0.0.1:%v%v", backend, r.RequestURI)
fmt.Println("Proxy client", r.RemoteAddr, "to", url)
defer c.Close()
flv,err := http.Get(url)
flv, err := http.Get(url)
go func() {
for {
var content string
err := websocket.Message.Receive(c, &content)
if err != nil {
fmt.Println("receive err", err)
flv.Body.Close()
c.Close()
return
}
}
}()
if err != nil {
fmt.Println("Connect backend", url, "failed, err is", err)
return
@ -30,7 +42,7 @@ func main() {
b := make([]byte, 1024)
for {
var n int
if n,err = flv.Body.Read(b); err != nil {
if n, err = flv.Body.Read(b); err != nil {
fmt.Println("Recv from backend failed, err is", err)
return
}
@ -47,4 +59,4 @@ func main() {
fmt.Println("Serve failed, err is", err)
return
}
}
}
Loading…
Cancel
Save