我需要将每张新图片保存在一个文件中,该文件由多个帧通过 websockets 发送。这是我的文件的代码:package mainimport ("fmt""golang.org/x/net/websocket""log""net/http""os""time")var (dirPath stringtest bytelenFile int)func check(e error) {if e != nil { panic(e)}}func ChatServer(ws *websocket.Conn) { defer ws.Close()var test []bytevar payload []bytefor { err := websocket.Message.Receive(ws, &payload) if err != nil { log.Println(err) } fmt.Println("Payload: ", len(payload)) test = append(test, payload...) fmt.Println("Test: ", len(test)) fo, err := os.Create(fmt.Sprintf("./%d.png", time.Now().UnixNano())) check(err) _, err = fo.Write(test) check(err) fo.Close()} log.Print("DONE")}func main() {if len(os.Args) < 2 { log.Fatal("Usage: chatExample <dir>")}dirPath = os.Args[1]fmt.Println("Starting... ")http.Handle("/", http.FileServer(http.Dir(dirPath)))http.Handle("/ws", websocket.Handler(ChatServer))err := http.ListenAndServe(":3000", nil)if err != nil { log.Fatal("ListenAndServe ", err)}}这是我按顺序下载两个文件的结果:所以如果我发送两个文件,而不是三个,我只需要保存两个文件(图像)。另外我需要保存两个不同的文件,我必须以某种方式从 websocket 连接中检测新文件。
1 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
发送者的片段的消息中的一个到两个帧。因为 x/net/websocket API 公开的是帧而不是消息,所以应用程序会写入三个文件。
使用 x/net/websocket 包无法检测消息边界。改用gorilla/websocket包。
- 1 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消