Avoid panic on disconnect

This commit is contained in:
Lubos Dolezel
2023-03-07 18:18:14 +01:00
parent d61d3c6a75
commit 23f87fef8b
2 changed files with 14 additions and 3 deletions

7
app.go
View File

@@ -263,9 +263,12 @@ func (a *App) Start() {
// entity listeners and event listeners // entity listeners and event listeners
elChan := make(chan ws.ChanMsg) elChan := make(chan ws.ChanMsg)
go ws.ListenWebsocket(a.conn, a.ctx, elChan) go ws.ListenWebsocket(a.conn, a.ctx, elChan)
var msg ws.ChanMsg
for { for {
msg = <-elChan msg, ok := <-elChan
if !ok {
break
}
if a.entityListenersId == msg.Id { if a.entityListenersId == msg.Id {
go callEntityListeners(a, msg.Raw) go callEntityListeners(a, msg.Raw)
} else { } else {

View File

@@ -3,6 +3,7 @@ package websocket
import ( import (
"context" "context"
"encoding/json" "encoding/json"
"log"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
) )
@@ -20,7 +21,14 @@ type ChanMsg struct {
func ListenWebsocket(conn *websocket.Conn, ctx context.Context, c chan ChanMsg) { func ListenWebsocket(conn *websocket.Conn, ctx context.Context, c chan ChanMsg) {
for { for {
bytes, _ := ReadMessage(conn, ctx) bytes, err := ReadMessage(conn, ctx)
if err != nil {
log.Default().Println("Error reading from websocket:", err)
close(c)
break
}
base := BaseMessage{} base := BaseMessage{}
json.Unmarshal(bytes, &base) json.Unmarshal(bytes, &base)
chanMsg := ChanMsg{ chanMsg := ChanMsg{