我的程序:package mainimport ( "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")
1 回答

躍然一笑
TA貢獻1826條經驗 獲得超6個贊
如果您不打算使用,則需要取消屏蔽有效負載:wsutil
buff := 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))
- 1 回答
- 0 關注
- 121 瀏覽
添加回答
舉報
0/150
提交
取消