我想保存几个文件,但 websocket 在创建单个文件后不断重新启动。我收到 websocket 错误
websocket:关闭1001(消失)
当我删除文件保存的代码块时,for循环起作用,否则,websocket重新启动。
conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
fmt.Println("Error upgrading to WebSocket:", err)
return
}
defer conn.Close()
for i := 0; ; i++ {
questionaire:= questionaires[i].msg //a couple of questions to be sent to client
if i == 0 {
// send initial message to frontend
sendServerMessageToClient(conn, questionaire)
} else {
messageType, msg, err := conn.ReadMessage()
if err != nil || err == io.EOF {
break
}
response = ""
if messageType == websocket.BinaryMessage {
// if this blocks of code here is removed, it works, otherwise restarts the websocket connection
fileName := fmt.Sprintf("answer%d.wav", i)
file, err := os.Create(fileName)
if err != nil {
fmt.Println(err)
}
_, err = file.Write(msg)
if err != nil {
fmt.Println(err)
}
// til here
// handle the saved file and call to speech to text api
response = "yes" //assumed the response is "yes"
}
switch response {
case "yes":
if i < len(questionaires) {
sendServerMessageToClient(conn, questionaire)
} else {
sendServerMessageToClient(conn, "end")
return
}
case "no":
sendServerMessage(conn, "Exiting")
return
default:
i--
}
}
}
我认为这是因为你所做的第一次迭代
file, err := os.Create(fileName)
第二次迭代,当你这样做时,
file
将为零(因为创建将失败,因为它已经存在)。那么当您尝试执行 file.Write
时,它可能会崩溃?
我会尝试这个
var file *os.File
for i := 0; ; i++ {
// ....
fileName := fmt.Sprintf("answer%d.wav", i)
if file == nil {
file, err = os.Create(fileName)
if err != nil {
fmt.Println(err)
}
}
_, err = file.Write(msg)
// ....
}