在 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
        }
    }
}

这样,如果客户端没有连接,代码会一直等待直到连接成功并开始读写数据。如果连接断开或出现其他错误,代码会退出循环并关闭连接。

Golang Websocket 服务器端代码: 处理客户端未连接问题

原文地址: https://www.cveoy.top/t/topic/ga7C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录