func wsHandle(conn *ws.Conn) { sess, _ := globalSessions.SessionStart(nil, conn.Request()) sessID := sess.SessionID() if Sc.connPool[sessID] == nil { Sc.Add(sessID, conn) } defer Sc.Remove(sessID, conn) go func() { var err error for info := range Sc.wchanPool[sessID].wchan { if _, err = ws.JSON.Send(conn, info); err != nil { return } } }() for { var req map[string]interface{} if err := ws.JSON.Receive(conn, &req); err != nil { // logs.Log.Debug("websocket接收出错断开 (%v) !", err) return } // log.Log.Debug("Received from web: %v", req) wsApi[util.Atoa(req["operate"])](sessID, req) } }
// log发送api func wsLogHandle(conn *ws.Conn) { var err error sess, _ := globalSessions.SessionStart(nil, conn.Request()) sessID := sess.SessionID() if Lsc.connPool[sessID] == nil { Lsc.Add(sessID, conn) } go func() { defer func() { // 关闭web前端log输出并断开websocket连接 Lsc.Remove(sessID, conn) }() for { if err := ws.JSON.Receive(conn, nil); err != nil { // logs.Log.Debug("websocket log接收出错断开 (%v) !", err) return } } }() for msg := range Lsc.lvPool[sessID].logChan { if _, err = ws.Message.Send(conn, msg); err != nil { return } } }