可以使用一个无限循环来等待客户端连接,并在连接成功后再执行读取操作。具体代码如下:

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return
    }
    defer conn.Close()

    // 等待客户端连接
    for {
        _, _, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            continue
        }
        break
    }

    // 客户端连接成功,执行读取操作
    for {
        _, message, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            break
        }
        log.Printf("Received message: %s", message)
    }
}

在上面的代码中,我们使用了一个无限循环来等待客户端连接。在循环中,我们不断尝试读取消息,直到客户端连接成功为止。在客户端连接成功后,我们再执行读取操作。这样就可以避免在客户端未连接时出现ReadMessage()错误的问题

golang websocket服务端代码中ReadMessage方法若是客户端没有链接会一直报错并且最后关闭websocket有什么办法可以解决这个问题等待客户端链接发送消息如果用循环的话connReadMessage会一直抛出错误如何测试客户端是否链接上服务端避免ReadMessage出错

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

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