From 14fd2d07f39fd7fe205f688cb2dee356e1d5da59 Mon Sep 17 00:00:00 2001 From: JustSong Date: Fri, 29 Jul 2022 23:53:06 +0800 Subject: [PATCH] :bug: bug fix --- app.js | 4 +++- client/main.go | 31 +++++++++++++++++++++++++++---- nginx.conf | 4 ++-- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/app.js b/app.js index a37f99a..6f64085 100644 --- a/app.js +++ b/app.js @@ -86,7 +86,9 @@ server.listen(config.port); wss.on('connection', (ws) => { ws.on('message', (data) => { let message = JSON.parse(data.toString()); - registerWebSocket(message.prefix, message.token, ws); + if (message.prefix) { + registerWebSocket(message.prefix, message.token, ws); + } }); }); diff --git a/client/main.go b/client/main.go index 78b9e81..c54c197 100644 --- a/client/main.go +++ b/client/main.go @@ -6,6 +6,7 @@ import ( "log" "net/url" "os" + "time" ) var ( @@ -18,6 +19,9 @@ type Verification struct { Token string `json:"token"` } +type Ping struct { +} + func main() { flag.Parse() connString := *conn @@ -37,6 +41,12 @@ func main() { scheme = "wss" } u := url.URL{Scheme: scheme, Host: connUrl.Host, Path: "/"} + verification := &Verification{ + Prefix: connUrl.Path[1:], + Token: *token, + } + ping := &Ping{} + ticker := time.NewTicker(60 * time.Second) for { log.Printf("Connecting to %s...\n", u.String()) c, _, err := websocket.DefaultDialer.Dial(u.String(), nil) @@ -45,20 +55,33 @@ func main() { return } log.Printf("Server connected.\n") - verification := &Verification{ - Prefix: connUrl.Path[1:], - Token: *token, - } + err = c.WriteJSON(verification) if err != nil { log.Fatal(err.Error()) } + go func() { + for { + select { + case <-ticker.C: + if err := c.WriteJSON(ping); err != nil { + log.Println("Error occurred when send ping message:", err) + log.Println("Connection lost, retrying...") + _ = c.Close() + break + } else { + log.Println("Ping message sent.") + } + } + } + }() for { var message = new(Message) err = c.ReadJSON(message) if err != nil { log.Println("Error occurred when read message:", err) log.Println("Connection lost, retrying...") + _ = c.Close() break } else { log.Println("New message arrived.") diff --git a/nginx.conf b/nginx.conf index ff29e71..9b003bb 100644 --- a/nginx.conf +++ b/nginx.conf @@ -1,6 +1,4 @@ server { - listen 443 ssl http2; - listen [::]:443 ssl http2; server_name 你的域名; location / { @@ -11,5 +9,7 @@ server { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_cache_bypass $http_upgrade; + proxy_read_timeout 300s; + proxy_send_timeout 300s; } } \ No newline at end of file