// copy everything from the pty master to the websocket // using base64 encoding for now due to limitations in term.js func sendPtyOutputToConnection(conn *websocket.Conn, reader io.ReadCloser, finalizer *ReadWriteRoutingFinalizer) { defer closeConn(conn, finalizer) buf := make([]byte, 8192) var buffer bytes.Buffer for { n, err := reader.Read(buf) if err != nil { if !isNormalPtyError(err) { log.Printf("Failed to read from pty: %s", err) } return } i, err := normalizeBuffer(&buffer, buf, n) if err != nil { log.Printf("Cound't normalize byte buffer to UTF-8 sequence, due to an error: %s", err.Error()) return } if err = conn.WriteMessage(websocket.TextMessage, buffer.Bytes()); err != nil { log.Printf("Failed to send websocket message: %s, due to occurred error %s", string(buffer.Bytes()), err.Error()) return } buffer.Reset() if i < n { buffer.Write(buf[i:n]) } } }