From bf3454d23086c1edf1dc63dc9c072991f9ead4ed Mon Sep 17 00:00:00 2001 From: giongto35 Date: Sun, 21 Apr 2019 22:08:48 +0800 Subject: [PATCH] Flag to turn off monitor --- config/config.go | 10 ++++++++++ main.go | 25 ++++++------------------- overlord.go | 7 ------- vpx-encoder/encoder.go | 6 +++++- webrtc/webrtc.go | 9 ++++++--- 5 files changed, 27 insertions(+), 30 deletions(-) create mode 100644 config/config.go diff --git a/config/config.go b/config/config.go new file mode 100644 index 00000000..3f03b0d4 --- /dev/null +++ b/config/config.go @@ -0,0 +1,10 @@ +package config + +import "flag" + +const defaultoverlord = "ws://localhost:9000/wso" + +var IsDebug = flag.Bool("debug", false, "Is game running in debug mode?") +var OverlordHost = flag.String("overlordhost", defaultoverlord, "Specify the path for overlord. If the flag is `overlord`, the server will be run as overlord") +var Port = flag.String("port", "8000", "Port of the game") +var IsMonitor = flag.Bool("monitor", false, "Turn on monitor") diff --git a/main.go b/main.go index a5b65d09..45e1ea71 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,7 @@ import ( "sync" "time" + "github.com/giongto35/cloud-game/config" "github.com/giongto35/cloud-game/ui" "github.com/giongto35/cloud-game/util" "github.com/giongto35/cloud-game/webrtc" @@ -60,22 +61,16 @@ var peerconnections = map[string]*webrtc.WebRTC{} var serverID = "" var oclient *Client -const defaultoverlord = "ws://localhost:9000/wso" - -var isDebug = flag.Bool("debug", false, "Is game running in debug mode?") -var overlordHost = flag.String("overlordhost", defaultoverlord, "Specify the path for overlord. If the flag is `overlord`, the server will be run as overlord") -var port = flag.String("port", "8000", "Port of the game") - func main() { flag.Parse() fmt.Println("Usage: ./game [debug]") - if *isDebug { + if *config.IsDebug { // debug indexFN = debugIndex fmt.Println("Use debug version") } - if *overlordHost == "overlord" { + if *config.OverlordHost == "overlord" { fmt.Println("Running as overlord ") IsOverlord = true } else { @@ -99,8 +94,8 @@ func main() { log.Println("oclient ", oclient) if !IsOverlord { - fmt.Println("http://localhost:" + *port) - http.ListenAndServe(":"+*port, nil) + fmt.Println("http://localhost:" + *config.Port) + http.ListenAndServe(":"+*config.Port, nil) } else { fmt.Println("http://localhost:9000") // Overlord expose one more path for handle overlord connections @@ -454,7 +449,7 @@ func bridgeConnection(session *Session, serverID string, gameName string, roomID } func createOverlordConnection() (*websocket.Conn, error) { - c, _, err := websocket.DefaultDialer.Dial(*overlordHost, nil) + c, _, err := websocket.DefaultDialer.Dial(*config.OverlordHost, nil) if err != nil { return nil, err } @@ -470,14 +465,6 @@ func NewOverlordClient() *Client { return nil } oclient := NewClient(oc) - oclient.send( - WSPacket{ - ID: "ping", - }, - func(resp WSPacket) { - log.Println("Received pong full flow") - }, - ) // Received from overlord the serverID oclient.receive( diff --git a/overlord.go b/overlord.go index e7d2fdf0..4a9795f8 100644 --- a/overlord.go +++ b/overlord.go @@ -46,13 +46,6 @@ func wso(w http.ResponseWriter, r *http.Request) { nil, ) - client.receive("ping", func(resp WSPacket) WSPacket { - log.Println("received Ping, sending Pong") - return WSPacket{ - ID: "pong", - } - }) - client.receive("registerRoom", func(resp WSPacket) WSPacket { log.Println("Received registerRoom ", resp.Data, serverID) roomToServer[resp.Data] = serverID diff --git a/vpx-encoder/encoder.go b/vpx-encoder/encoder.go index 6a5c6b7b..5392559c 100644 --- a/vpx-encoder/encoder.go +++ b/vpx-encoder/encoder.go @@ -5,6 +5,8 @@ import ( "log" "time" "unsafe" + + "github.com/giongto35/cloud-game/config" ) // https://chromium.googlesource.com/webm/libvpx/+/master/examples/simple_encoder.c @@ -145,7 +147,9 @@ func (v *VpxEncoder) startLooping() { v.Output <- bs } - log.Println("Encoding time: ", time.Now().Sub(beginEncoding)) + if *config.IsMonitor { + log.Println("Encoding time: ", time.Now().Sub(beginEncoding)) + } } }() } diff --git a/webrtc/webrtc.go b/webrtc/webrtc.go index 56464933..e0cb59d9 100644 --- a/webrtc/webrtc.go +++ b/webrtc/webrtc.go @@ -12,12 +12,13 @@ import ( "math/rand" "time" + "github.com/giongto35/cloud-game/config" vpxEncoder "github.com/giongto35/cloud-game/vpx-encoder" "github.com/pion/webrtc" "github.com/pion/webrtc/pkg/media" ) -var config = webrtc.Configuration{ICEServers: []webrtc.ICEServer{{URLs: []string{"stun:stun.l.google.com:19302"}}}} +var webrtcconfig = webrtc.Configuration{ICEServers: []webrtc.ICEServer{{URLs: []string{"stun:stun.l.google.com:19302"}}}} // Allows compressing offer/answer to bypass terminal input limits. const compress = false @@ -144,7 +145,7 @@ func (w *WebRTC) StartClient(remoteSession string, width, height int) (string, e log.Println("=== StartClient ===") - w.connection, err = webrtc.NewPeerConnection(config) + w.connection, err = webrtc.NewPeerConnection(webrtcconfig) if err != nil { return "", err } @@ -274,7 +275,9 @@ func (w *WebRTC) startStreaming(vp8Track *webrtc.Track) { go func() { for w.isConnected { bs := <-w.encoder.Output - log.Println("FPS : ", w.calculateFPS()) + if *config.IsMonitor { + log.Println("FPS : ", w.calculateFPS()) + } vp8Track.WriteSample(media.Sample{Data: bs, Samples: 1}) } }()