From 9559edf4d4717738a622b42e1eb50b5e05ecca81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Sun, 1 Nov 2020 16:37:00 +0100 Subject: [PATCH] bug fixes. --- internal/types/message/messages.go | 5 ++++- internal/websocket/handler/session.go | 10 ++++------ internal/websocket/manager.go | 20 ++++++++++---------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/internal/types/message/messages.go b/internal/types/message/messages.go index eef0c8f5..91c3b927 100644 --- a/internal/types/message/messages.go +++ b/internal/types/message/messages.go @@ -41,7 +41,10 @@ type MembersListEntry struct { type Member struct { Event string `json:"event"` - Member *MembersListEntry + ID string `json:"id"` + Name string `json:"displayname"` + Admin bool `json:"admin"` + Muted bool `json:"muted"` } type MemberDisconnected struct { diff --git a/internal/websocket/handler/session.go b/internal/websocket/handler/session.go index 58d2d7f2..530b5f1c 100644 --- a/internal/websocket/handler/session.go +++ b/internal/websocket/handler/session.go @@ -69,12 +69,10 @@ func (h *MessageHandlerCtx) SessionConnected(session types.Session) error { if err := h.sessions.Broadcast( message.Member{ Event: event.MEMBER_CONNECTED, - Member: &message.MembersListEntry{ - ID: session.ID(), - Name: session.Name(), - Admin: session.Admin(), - Muted: session.Muted(), - }, + ID: session.ID(), + Name: session.Name(), + Admin: session.Admin(), + Muted: session.Muted(), }, nil); err != nil { h.logger.Warn().Err(err).Msgf("broadcasting event %s has failed", event.CONTROL_RELEASE) return err diff --git a/internal/websocket/manager.go b/internal/websocket/manager.go index 7b33ea2c..80f8d8ee 100644 --- a/internal/websocket/manager.go +++ b/internal/websocket/manager.go @@ -231,18 +231,18 @@ func (ws *WebSocketManagerCtx) handle(connection *websocket.Conn, id string) { for { _, raw, err := connection.ReadMessage() - if err == nil { - bytes <- raw - continue + if err != nil { + if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { + ws.logger.Warn().Err(err).Msg("read message error") + } else { + ws.logger.Debug().Err(err).Msg("read message error") + } + + close(cancel) + break } - if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseAbnormalClosure) { - ws.logger.Warn().Err(err).Msg("read message error") - } else { - ws.logger.Debug().Err(err).Msg("read message error") - } - - close(cancel) + bytes <- raw } }()