From 69b35b9b68016e5ec9e056116be9d0f4ec1d2a98 Mon Sep 17 00:00:00 2001 From: sp Date: Sat, 31 Jul 2021 17:30:04 +1000 Subject: [PATCH] added websocket and using flex engine --- .gitignore | 1 + api1ws.go | 60 ++++++++++++++++++++++++++++++++++++----------- app.yaml | 3 ++- config.json | 4 ++-- html/favicon.ico | Bin 0 -> 2288 bytes html/index.html | 10 +++++++- http_handler.go | 2 +- 7 files changed, 61 insertions(+), 19 deletions(-) create mode 100644 .gitignore create mode 100644 html/favicon.ico 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 0000000000000000000000000000000000000000..3f395aef72becff512c4818d89900cca2a9635f3 GIT binary patch literal 2288 zcmV|#)bRo) zj_sI??OANk{@(3}Su&0tOFhzPuI{_{o^$@^f6hHua1p6)X=9|lH8VB<3bNW1 z9OdP}-N5#QX_Xk7{6TV+oN9Z=u?5&sQQ29%tT1-J<{LNbk7SL0KWhD8w(?l z)IF)P$I=FLN*Ij>lo85PR>%0Lu%C7+S0p&_58dp@XyY-taDaq&4@hE@knPw!E zU|FHTx>7rCo4^;b=opO->D9hq@wTL4=3C4u-cr_C~|eKeU|Q^1zE6`u#S< z1u=gE*a%QwHV0 zB7;XadvV)kR&m^lq6-5lGzQNG2J3Hod;=Xj!%yw|PZj|k_zmzdfKrOb@4TMxZEoPV zA5YRb7Uesu^7(ONA+Pn%aA-KpRK#L3VzT$PCD=7V?_`|&4^1!?F?n>0mrd2qtO0Kh zKTTc11{yrqAP}nit8>q8SYEyZKu@n}0Jdl1wW*<+t(zNozB|MxBM~-LJGpaxAxeQm z7hGQMKnf_dYuM5;uXO3$xz0^6Ze_hsSTTmCdl;P^;8dWK2G7-i5GyK*ZhiA;|I0UT zTyz)D>(% z3XOcjO{ec20HhQ+bp3|CpS-e4k}9umfOyiR`N}$^5QGyJ0B*a)rl;KO@x_Rnif~e4 zDX7fXu@vkZoaMctSqv%o;W`hK@qQ!{kG%|qB5KZ1@4e+|19G#6_CNpWL07KKLF3AT{aeUyaVlFGUqf3FMauGB>E!Emf9QwNYj5DLdgTGoOFyxup%vGFJX#ZHZt z9)ogMDm#*vqU&6Y*ZQWhYXSu{*PXvD%bYcMomE^>awAUNot+Pb<4C}tnMjxx!@khM z2m}&98h)pw*s0C=uBEt%1!!Xag(Q*exMUX<&f4tU)O2K20)v?eLz5giH9Bwe*i4dm zns`b5&k?tWM!@f|L1m4O_>YAkY%p@JXb5R(Wijz#& z0;ewKdD!EN@l_y!6e$F@EX`X~xl(Yfe~hDjV_5{UJh15+kG%BpoDHW#=Ml)aNdhs8 z-CaR?CleeViLmRqA43WfreagIlj=o60Pw}QpLahUIu%cv{St@(&t*PpQt;nlAMO7- z3BXh|m0B5b8IlsG#(~pe?my(?iKBkPiIjDvc^Y?IQh-BWu-64r<^JUld+F>yd$7`z ze@c$Dw8xlxW#)hR{p1kWO>Z*!Kmy=3~Hj0T-mIzGqluEIy~o$nkwp+cqn$+ zF)f8J7^Zh*l8<`M@X_aI5JF(+5}+HnZKS<*@WSWWVo$R?;0fSXpe%QdQi_CWkuWVR zOJOO6AjKO^3JhJ#AT$o_1s)!0Z=G5QsYM^B>G8F|?Z6Gd>V*NHC#Qgez^fzetp_t_ z!u%KVMX7s%5jwC6s0S_s8q>e3^zu=lE9ch_oEm9wwJtpCLirzY_3*Dfha^}40000< KMNUMnLSTa46i6rl literal 0 HcmV?d00001 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 @@