我的程序: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 关注
- 100 浏览
添加回答
举报
0/150
提交
取消