Golang Websocket 服务器端代码: 处理客户端未连接问题
在 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/ga7C 著作权归作者所有。请勿转载和采集!