golang websocket服务端代码中ReadMessage方法若是客户端没有链接会一直报错并且最后关闭websocket有什么办法可以解决这个问题等待客户端链接发送消息
可以使用循环来等待客户端连接并发送消息,如下所示:
for {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("Upgrade error:", err)
continue
}
defer conn.Close()
// 连接成功,开始读写数据
for {
_, msg, err := conn.ReadMessage()
if err != nil {
log.Println("Read error:", err)
break
}
log.Println("Received message:", string(msg))
reply := []byte("Received: " + string(msg))
err = conn.WriteMessage(websocket.TextMessage, reply)
if err != nil {
log.Println("Write error:", err)
break
}
}
}
这样,如果客户端没有连接,代码会一直等待直到连接成功并开始读写数据。如果连接断开或出现其他错误,代码会退出循环并关闭连接
原文地址: https://www.cveoy.top/t/topic/dUiX 著作权归作者所有。请勿转载和采集!