Flag to turn off monitor

This commit is contained in:
giongto35 2019-04-21 22:08:48 +08:00
parent f5bb8f8593
commit bf3454d230
5 changed files with 27 additions and 30 deletions

10
config/config.go Normal file
View file

@ -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")

25
main.go
View file

@ -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(

View file

@ -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

View file

@ -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))
}
}
}()
}

View file

@ -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})
}
}()