func wsHandle(conn *ws.Conn) { defer func() { close(wchan) conn.Close() }() wchan = make(chan interface{}, 1024) go func(conn *ws.Conn) { var err error defer func() { reporter.Printf("websocket发送出错断开 (%v) !", err) }() for info := range wchan { if _, err = ws.JSON.Send(conn, info); err != nil { return } } }(conn) for { var req map[string]interface{} if err := ws.JSON.Receive(conn, &req); err != nil { reporter.Printf("websocket接收出错断开 (%v) !", err) return } reporter.Printf("Received from web: %v", req) wsApi[util.Atoa(req["operate"])](conn, req) } }
// log发送api func wsLogHandle(conn *ws.Conn) { var err error defer func() { reporter.Printf("websocket log发送出错断开 (%v) !", err) }() Log.logChan = make(chan string, 1024) go func(conn *ws.Conn) { defer func() { close(Log.logChan) conn.Close() }() for { if err := ws.JSON.Receive(conn, nil); err != nil { reporter.Printf("websocket log接收出错断开 (%v) !", err) return } } }(conn) for msg := range Log.logChan { if _, err = ws.Message.Send(conn, msg); err != nil { return } } }
func wsHandle(conn *ws.Conn) { wchanClosed = false defer func() { // 连接断开前关闭正在运行的任务 if isRunning { isRunning = false logicApp.LogStop().Stop() } wchanClosed = true close(wchan) conn.Close() }() wchan = make(chan interface{}, 1024) go func(conn *ws.Conn) { var err error defer func() { // reporter.Printf("websocket发送出错断开 (%v) !", err) }() for info := range wchan { if _, err = ws.JSON.Send(conn, info); err != nil { return } } }(conn) for { var req map[string]interface{} if err := ws.JSON.Receive(conn, &req); err != nil { // reporter.Printf("websocket接收出错断开 (%v) !", err) return } reporter.Printf("Received from web: %v", req) wsApi[util.Atoa(req["operate"])](conn, req) } }