读取 golang websocket 返回随机字节

我的程序:


package main


import (

    "fmt"

    "io"

    "log"

    "net"


    "github.com/gobwas/ws"

)


func HandleConn(conn net.Conn) {

    for {

        header, err := ws.ReadHeader(conn)

        if err != nil {

            log.Fatal(err)

        }


        buf := make([]byte, header.Length)

        _, err = io.ReadFull(conn, buf)

        if err != nil {

            log.Fatal(err)

        }

        fmt.Println(buf)

        fmt.Println(string(buf))

    }

}


func main() {

    ln, err := net.Listen("tcp", "localhost:8080")

    if err != nil {

        log.Fatal(err)

    }

    for {

        conn, err := ln.Accept()

        if err != nil {

            log.Fatal(err)

        }

        _, err = ws.Upgrade(conn)

        if err != nil {

            log.Fatal(err)

        }

        go HandleConn(conn)

    }

}

我在浏览器控制台中做:


let socket = new WebSocket("ws://127.0.0.1:8080")

socket.send("Hello world")

我在终端中看到随机字节。每个调用返回不同的字节。但字节数组的长度始终等于字符串的长度。golang 从哪里获得这些随机字节?我该如何解决这个问题?我的程序是文档中的一个例子。socket.send("Hello world")


Helenr
浏览 109回答 1
1回答

跃然一笑

如果您不打算使用,则需要取消屏蔽有效负载:wsutilbuff := make([]byte, header.Length)_, err = io.ReadFull(conn, buff)if err != nil {    // handle error}if header.Masked {    ws.Cipher(buff, header.Mask, 0)}fmt.Println(string(buff))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go