From 6e482a2220307d094c643bc0a75ad38494dc4b52 Mon Sep 17 00:00:00 2001 From: Andreas Mieke Date: Fri, 18 Aug 2017 08:51:43 +0200 Subject: [PATCH] Change websocket library. This Fixes #6 --- socialdragon/main.go | 2 +- socialdragon/socket.go | 45 ++++++++++++++---------------------------- vendor/vendor.json | 6 ++++++ 3 files changed, 22 insertions(+), 31 deletions(-) diff --git a/socialdragon/main.go b/socialdragon/main.go index ece282c..c401b1c 100644 --- a/socialdragon/main.go +++ b/socialdragon/main.go @@ -66,7 +66,7 @@ func setupGin() { router.POST("/admin/approve/:id", approveSnap) router.POST("/admin/reject/:id", rejectSnap) - router.GET("/ws", func(c *gin.Context) { wsHandler(c.Writer, c.Request) }) + router.GET("/ws", wsHandler) router.GET("/listSnaps", listSnaps) router.LoadHTMLGlob(config.C.TemplatesDirectory + "/*.html") diff --git a/socialdragon/socket.go b/socialdragon/socket.go index e19da48..05f7b29 100644 --- a/socialdragon/socket.go +++ b/socialdragon/socket.go @@ -1,46 +1,31 @@ package main import ( + "encoding/json" "log" - "net/http" + + melody "gopkg.in/olahol/melody.v1" "git.1750studios.com/AniNite/SocialDragon/database" - "github.com/gorilla/websocket" + "github.com/gin-gonic/gin" ) -var wsupgrader = websocket.Upgrader{ - ReadBufferSize: 1024, - WriteBufferSize: 1024, - CheckOrigin: func(r *http.Request) bool { - return true - }, -} -var sockets []*websocket.Conn -var lastID uint +var m *melody.Melody -func wsHandler(w http.ResponseWriter, r *http.Request) { - conn, err := wsupgrader.Upgrade(w, r, nil) - if err != nil { - log.Printf("Failed to set websocket upgrade: %+v", err) - return - } - sockets = append(sockets, conn) - for { - _, _, err := conn.ReadMessage() - if err != nil { - break - } - } +func init() { + m = melody.New() +} + +func wsHandler(c *gin.Context) { + m.HandleRequest(c.Writer, c.Request) } // SendUpdate sends the content of IT to all connected webcosckets, gets called by database handler. func SendUpdate(IT database.Item) { - for i, socket := range sockets { - err := socket.WriteJSON(IT) - if err != nil { - sockets = append(sockets[:i], sockets[i+1:]...) - continue - } + msg, err := json.Marshal(IT) + if err != nil { + log.Print(err) } + m.Broadcast(msg) } diff --git a/vendor/vendor.json b/vendor/vendor.json index 8b16723..89491a5 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -158,6 +158,12 @@ "revision": "5f57d2222ad794d0dffb07e664ea05e2ee07d60c", "revisionTime": "2016-07-18T13:41:25Z" }, + { + "checksumSHA1": "imPi2JDKAJPo4w4tiJWviYRKXOg=", + "path": "gopkg.in/olahol/melody.v1", + "revision": "d521390733761fe1db13de575c253afd5c743085", + "revisionTime": "2017-05-18T10:55:55Z" + }, { "checksumSHA1": "fALlQNY1fM99NesfLJ50KguWsio=", "path": "gopkg.in/yaml.v2",