diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d8f181c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/cert/ diff --git a/api1ws.go b/api1ws.go index aa61b4a..4eabb24 100644 --- a/api1ws.go +++ b/api1ws.go @@ -3,8 +3,9 @@ package main import ( "fmt" "github.com/gorilla/websocket" - "log" + log "github.com/sirupsen/logrus" "net/http" + "time" ) const apiV1WebSocket = apiV1Prefix + "ws" @@ -39,20 +40,32 @@ func wsReader(conn *websocket.Conn) { return } - WsEchoIncomingMessage(conn, string(p), messageType) - //switch messageType { - //case websocket.TextMessage: - // WsProcessingTxtMessage(conn, string(p)) - // break - //case websocket.BinaryMessage: - // WsProcessingBinaryMessage(conn, p) - // break - //case websocket.PingMessage: - // break - //case websocket.PongMessage: - // break - //} + switch messageType { + case websocket.TextMessage: + WsProcessingTxtMessage(conn, string(p)) + break + case websocket.BinaryMessage: + WsProcessingBinaryMessage(conn, p) + break + case websocket.PingMessage: + break + case websocket.PongMessage: + break + } + } +} + +func WsProcessingTxtMessage(conn *websocket.Conn, str string) { + if str == "send dummy string for 500 times" { + go wsDummySender(conn) + } else { + WsEchoIncomingMessage(conn, str, websocket.TextMessage) } + +} + +func WsProcessingBinaryMessage(conn *websocket.Conn, data []byte) { + return } func WsEchoIncomingMessage(conn *websocket.Conn, msg string, messageType int) { @@ -65,3 +78,22 @@ func WsEchoIncomingMessage(conn *websocket.Conn, msg string, messageType int) { return } } + +func wsDummySender(conn *websocket.Conn) { + //write subsequent 5 copies, each after 1 second + log.Info("start sending server data to client ..") + p := "From server " + for i := 1; i < 500; i++ { + time.Sleep(1 * time.Second) + n := time.Now() + s := n.Format("2006-01-02 15:04:05") + p1 := p + s + //msg := fmt.Sprintf("copy %d, %s, %s", i, p, wsDummyString()) // 4M long string no issue + msg := fmt.Sprintf("copy %d, %s ", i, p1) + log.Info("dummy sender is working, ", msg) + if err := conn.WriteMessage(websocket.TextMessage, []byte(msg)); err != nil { + log.Println("wsDummySender stopped on error: ", err) + return + } + } +} diff --git a/app.yaml b/app.yaml index e46078e..cc251bd 100644 --- a/app.yaml +++ b/app.yaml @@ -1 +1,2 @@ -runtime: go115 \ No newline at end of file +runtime: go1.15 +env: flex \ No newline at end of file diff --git a/config.json b/config.json index e256aad..b612a4c 100644 --- a/config.json +++ b/config.json @@ -2,8 +2,8 @@ "Host":"0.0.0.0", "Port":"8080", "DSN": "sp:sp@tcp(192.168.1.70:3306)/syd_credit?parseTime=true&loc=Australia%2FSydney&collation=utf8mb4_0900_ai_ci", - "TlsCert": "fullchain.pem", - "TlsKey": "privkey.pem", + "TlsCert": "cert/fullchain.pem", + "TlsKey": "cert/privkey.pem", "Debug": true, "Static": [ { diff --git a/html/favicon.ico b/html/favicon.ico new file mode 100644 index 0000000..3f395ae Binary files /dev/null and b/html/favicon.ico differ diff --git a/html/index.html b/html/index.html index 6161a80..b780023 100644 --- a/html/index.html +++ b/html/index.html @@ -26,7 +26,15 @@