func EchoServer(ws *websocket.Conn) { addr := ws.LocalAddr().String() pfx := []byte("[" + addr + "] ") log.Printf("ws connect on %s", addr) // the following could be done with io.Copy(ws, ws) // but I want to add some meta data var msg = make([]byte, 1024) for { n, err := ws.Read(msg) if err != nil && err != io.EOF { log.Printf("ws error on %s. %s", addr, err) break } _, err = ws.Write(append(pfx, msg[:n]...)) if err != nil && err != io.EOF { log.Printf("ws error on %s. %s", addr, err) break } } log.Printf("ws disconnect on %s", addr) }