使用for循环读取使用Gorilla包的websocket:

for {
    _, message, err := c.ReadMessage()
    if err != nil {
        log.Println("read:", err)
        c.Close()
        break
    }
    handleMessage(message)
}

在goroutine中运行循环以使其异步:

go func() {
    for {
        _, message, err := c.ReadMessage()
        if err != nil {
            log.Println("read:", err)
            c.Close()
            break
        }
        handleMessage(message)
    }
}()