gpt4 book ai didi

go - gorilla /websocket发送和读取字节数据

转载 作者:行者123 更新时间:2023-12-01 21:11:57 31 4
gpt4 key购买 nike

我想通过 gorilla /websocket发送图像数据的字节,我当前的代码是:

var b bytes.Buffer
empty := bufio.NewWriter(&b)
png.Encode(empty, img)

err = c.WriteMessage(websocket.TextMessage, b.Bytes())

我的接收消息代码:
_, message, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
return
}
// log.Printf("recv: %s", message)
ioutil.WriteFile("./nani.png", []byte(message), 0644)

然后保存的文件已损坏,我如何以二进制/字节的形式写入/读取消息

最佳答案

必须刷新bufio.Writer才能将任何缓冲的数据写入基础写入器(在本例中为bytes.Buffer)。如果未刷新bufio.Writer,则某些图像数据可能会丢失,并且图像似乎已损坏。

有关刷新写入器的更多信息,请参见bufio.Writer documentation

解决方法是:

var b bytes.Buffer
empty := bufio.NewWriter(&b)
png.Encode(empty, img)
empty.Flush() // <-- add this call

由于在写入byte.Buffer时不需要缓冲数据,因此可以通过消除bufio.Writer来改进代码:
var b bytes.Buffer
png.Encode(&b, img)

使用 websocket.BinaryMessage发送二进制消息。有关消息类型的更多信息,请参见文档的 Data Message部分。

关于go - gorilla /websocket发送和读取字节数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59434554/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com