diff --git a/gui.go b/gui.go index 9eacdcc..eab9b59 100644 --- a/gui.go +++ b/gui.go @@ -30,6 +30,11 @@ var upGrader = websocket.Upgrader{ }, } +var ( + logConn *websocket.Conn + dataCoon *websocket.Conn +) + func InitWindow() { defer func() { err := recover() @@ -104,16 +109,20 @@ func InitWindow() { log.Errorln(err) return } - go func() { - for { - event := <-hook.LogChan - err = conn.WriteMessage(websocket.TextMessage, []byte(event)) - if err != nil { - log.Debugln("前端日志消息发送失败" + err.Error()) - continue + if logConn == nil { + logConn = conn + go func() { + for { + event := <-hook.LogChan + err = logConn.WriteMessage(websocket.TextMessage, []byte(event)) + if err != nil { + log.Debugln("前端日志消息发送失败" + err.Error()) + continue + } } - } - }() + }() + } + logConn = conn }) engine.POST("/send_msg", CallApi) @@ -131,32 +140,36 @@ func data(ctx *gin.Context) { return } - go func() { - for { - _, message, err := conn.ReadMessage() - if err != nil { - log.Debugln("接收消息失败" + err.Error()) - break - } - if string(message) == "ping" { - message = []byte("pong") + if dataCoon == nil { + dataCoon = conn + go func() { + for { + _, m, err := dataCoon.ReadMessage() + if err != nil { + log.Debugln("接收消息失败" + err.Error()) + break + } + if string(m) == "ping" { + m = []byte("pong") + } + //写入ws数据 } - //写入ws数据 - } - }() + }() - go func() { - for { - event := <-MessageChan - log.Debugln("已向前端发送信息") - err = conn.WriteJSON(&event) - if err != nil { - log.Debugln("消息发送失败" + err.Error()) - continue + go func() { + for { + event := <-MessageChan + log.Debugln("已向前端发送信息") + err = dataCoon.WriteJSON(&event) + if err != nil { + log.Debugln("消息发送失败" + err.Error()) + continue + } } - } - }() + }() + } + dataCoon = conn } diff --git a/init.go b/init.go index c764f89..5332a2b 100644 --- a/init.go +++ b/init.go @@ -157,7 +157,7 @@ func initConfig(path string, fileType string) error { hook.AddLevel(utils.GetLogLevel(DefaultConfig.LogLevel)...) log.Infoln("已加载配置:" + string(data)) - log.SetLevel(log.DebugLevel) + //log.SetLevel(log.DebugLevel) return err } diff --git a/server.go b/server.go index 3381234..ed7cd0c 100644 --- a/server.go +++ b/server.go @@ -137,13 +137,23 @@ func EventHandle(w http.ResponseWriter, r *http.Request) { closeChan: make(chan byte), } - // 将所有bot实例的client对象初始化 - for _, bot := range DefaultConfig.Bots { - if bot.SelfId == selfId { - log.Infoln("bot:" + strconv.Itoa(bot.SelfId) + "已上线") - bot.Client = wscon + // 判断bot列表里面是否存在该bot,不存在则append进去,存在则将ws链接进行赋值 + if a := func() bool { + for _, bot := range DefaultConfig.Bots { + if bot.SelfId == selfId { + bot.Client = wscon + return true + } } + return false + }(); !a { + DefaultConfig.Bots = append(DefaultConfig.Bots, &Bot{ + Name: "", + SelfId: selfId, + Client: wscon, + }) } + log.Infoln("bot:" + strconv.Itoa(selfId) + "已上线") // 处理所有的connect事件 for _, handle := range ConnectHandles { handle.handle(Connect{SelfID: selfId, ClientRole: role, Host: host}, GetBotById(selfId))