Skip to content

Commit

Permalink
修复ws bug`
Browse files Browse the repository at this point in the history
  • Loading branch information
leon.chen committed Jan 13, 2021
1 parent ed50c31 commit ed41ab5
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
12 changes: 8 additions & 4 deletions backend/controllers/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -540,22 +540,26 @@ func LokiTail(c *gin.Context) {
chanSendMessage := make(chan utils.WsMessage)
chanReceiveMessage := make(chan utils.WsMessage)
chanSignal := make(chan int)
defer close(chanSendMessage)
defer close(chanReceiveMessage)

go utils.WebSocketClientHandler(clientConnect, chanSendMessage, chanSignal)
go utils.WebSocketServerHandler(serverConnect, chanReceiveMessage, chanSignal)

for {
select {
case wsClientMessage := <-chanSendMessage:
case wsClientMessage, ok := <-chanSendMessage:
if !ok {
return
}
data := utils.LokiWebsocketMessageConstruct(wsClientMessage.Data, filters)
err := serverConnect.WriteMessage(wsClientMessage.MessageType, data)
if err != nil {
utils.Log4Zap(zap.ErrorLevel).Error(fmt.Sprintf("send message to viewer error, %s", err))
return
}
case wsServerMessage := <-chanReceiveMessage:
case wsServerMessage, ok := <-chanReceiveMessage:
if !ok {
return
}
data := string(wsServerMessage.Data)
if data == "close" {
return
Expand Down
4 changes: 4 additions & 0 deletions backend/utils/lokiwebsocket.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,13 @@ func WebSocketClientHandler(clientConnect *websocket.Conn, ch chan WsMessage, si
if timer != nil {
timer.Stop()
}
close(ch)
return
}
case <-timer.C:
messageType, data, err := clientConnect.ReadMessage()
if err != nil {
close(ch)
Log4Zap(zap.ErrorLevel).Error(fmt.Sprintf("read message from loki error, %s", err))
timer.Stop()
break
Expand Down Expand Up @@ -88,13 +90,15 @@ func WebSocketServerHandler(serverConnect *websocket.Conn, ch chan WsMessage, si
for {
messageType, data, err := serverConnect.ReadMessage()
if err != nil {
close(ch)
Log4Zap(zap.ErrorLevel).Error(fmt.Sprintf("read message from viewer error, %s", err))
return
}
if len(data) > 0 {
if string(data) == "close" {
signal <- 0
ch <- WsMessage{MessageType: messageType, Data: data}
close(ch)
return
}
ch <- WsMessage{MessageType: messageType, Data: data}
Expand Down
3 changes: 2 additions & 1 deletion ui/src/components/BaseToolbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ a {
color: inherit;
}
.zoom-menu {
left: 1760px !important;
right: 10px;
left: auto !important;
}
</style>

0 comments on commit ed41ab5

Please sign in to comment.