读取 golang websocket returns 随机字节
reading golang websocket returns random bytes
我的程序:
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")
我在我的终端中看到随机字节。每次调用 socket.send("Hello world")
return 不同的字节。但是字节数组的长度总是等于字符串的长度。 golang 从哪里得到这些随机字节?我怎样才能解决这个问题?我的程序是文档中的示例。
如果您不打算使用 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))
我的程序:
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")
我在我的终端中看到随机字节。每次调用 socket.send("Hello world")
return 不同的字节。但是字节数组的长度总是等于字符串的长度。 golang 从哪里得到这些随机字节?我怎样才能解决这个问题?我的程序是文档中的示例。
如果您不打算使用 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))