/* Package wsutil provides utilities for working with WebSocket protocol. Overview: // Read masked text message from peer and check utf8 encoding. header, err := ws.ReadHeader(conn) if err != nil { // handle err } // Prepare to read payload. r := io.LimitReader(conn, header.Length) r = wsutil.NewCipherReader(r, header.Mask) r = wsutil.NewUTF8Reader(r) payload, err := ioutil.ReadAll(r) if err != nil { // handle err } You could get the same behavior using just `wsutil.Reader`: r := wsutil.Reader{ Source: conn, CheckUTF8: true, } payload, err := ioutil.ReadAll(r) if err != nil { // handle err } Or even simplest: payload, err := wsutil.ReadClientText(conn) if err != nil { // handle err } Package is also exports tools for buffered writing: // Create buffered writer, that will buffer output bytes and send them as // 128-length fragments (with exception on large writes, see the doc). writer := wsutil.NewWriterSize(conn, ws.StateServerSide, ws.OpText, 128) _, err := io.CopyN(writer, rand.Reader, 100) if err == nil { err = writer.Flush() } if err != nil { // handle error } For more utils and helpers see the documentation. */ package wsutil