我已经能够使用golang在websocket上转发telnet,使用的东西如下

func forwardtcp(wsconn *websocket.Conn, conn *telnet.Conn) {
    connbuf := bufio.NewReader(conn)
    tcpbuffer := make([]byte, 128)

    for {
        n, err := connbuf.Read(tcpbuffer)

        if err != nil {
            log.Println("TCP Read failed")
            break
        }
        if err == nil {
            wsconn.WriteMessage(websocket.BinaryMessage, tcpbuffer[:n])
        }
    }
}

但是,我无法对SSH或shell会话执行类似的操作。我不能理解一个基本的概念

targetStdout, _ := session.StdoutPipe()
targetStdin, _ := session.StdinPipe()

碎片。

我可以使用io.Copy,但不确定如何将其格式化为可以通过websocket连接发送的数据报。

是否可以使用字节来处理targetStdin和targetStdout管道,例如从websocket连接接收到的字节?或者,有没有更好的方法从SSH连接获取io?