mirror of
https://github.com/balzack/databag.git
synced 2025-02-12 03:29:16 +00:00
gracefully exit websocket on server exit
This commit is contained in:
parent
a9ce9c938e
commit
2327c774f3
@ -30,6 +30,7 @@ type accountRevision struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var wsSync sync.Mutex
|
var wsSync sync.Mutex
|
||||||
|
var wsExit = make(chan bool, 1)
|
||||||
var statusListener = make(map[uint][]chan<-[]byte)
|
var statusListener = make(map[uint][]chan<-[]byte)
|
||||||
var upgrader = websocket.Upgrader{}
|
var upgrader = websocket.Upgrader{}
|
||||||
|
|
||||||
@ -52,7 +53,7 @@ func Status(w http.ResponseWriter, r *http.Request) {
|
|||||||
err = store.DB.Model(&Revision{}).Where("ID = ?", act).First(&ar).Error
|
err = store.DB.Model(&Revision{}).Where("ID = ?", act).First(&ar).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Status - failed to get account revision")
|
log.Println("Status - failed to get account revision")
|
||||||
return
|
// return
|
||||||
}
|
}
|
||||||
rev := getRevision(ar)
|
rev := getRevision(ar)
|
||||||
|
|
||||||
@ -78,13 +79,20 @@ func Status(w http.ResponseWriter, r *http.Request) {
|
|||||||
defer RemoveStatusListener(act, c)
|
defer RemoveStatusListener(act, c)
|
||||||
|
|
||||||
// send revision until channel is closed
|
// send revision until channel is closed
|
||||||
for msg := range c {
|
for {
|
||||||
err = conn.WriteMessage(websocket.TextMessage, msg)
|
select {
|
||||||
if err != nil {
|
case msg := <-c:
|
||||||
log.Println("Status - failed to send revision, closing")
|
err = conn.WriteMessage(websocket.TextMessage, msg)
|
||||||
return
|
if err != nil {
|
||||||
}
|
log.Println("Status - failed to send revision, closing")
|
||||||
}
|
return
|
||||||
|
}
|
||||||
|
case <-wsExit:
|
||||||
|
log.Println("Status - server exit")
|
||||||
|
wsExit<-true
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getRevision(rev accountRevision) Revision {
|
func getRevision(rev accountRevision) Revision {
|
||||||
@ -99,6 +107,10 @@ func getRevision(rev accountRevision) Revision {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExitStatus() {
|
||||||
|
wsExit <- true
|
||||||
|
}
|
||||||
|
|
||||||
func SetStatus(act uint) {
|
func SetStatus(act uint) {
|
||||||
|
|
||||||
// get revisions for the account
|
// get revisions for the account
|
||||||
|
Loading…
Reference in New Issue
Block a user