Golang 中,可以使用 `net/http` 包提供的 `http.ResponseWriter` 和 `http.Request` 对象来处理 WebSocket 连接。 要检查 WebSocket 连接状态,可以使用 `http.ResponseWriter` 对象的 `CloseNotify()` 方法。该方法返回一个 `chan bool` 类型的通道,当客户端关闭连接时,该通道将被关闭。我们可以在服务器端通过监听该通道来检查 WebSocket 连接状态。 下面是一个使用 `CloseNotify()` 方法检查 WebSocket 连接状态的示例代码: ```go func serveWebSocket(w http.ResponseWriter, r *http.Request) { // 升级 HTTP 连接为 WebSocket 连接 conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("upgrade error:", err) return } defer conn.Close() // 监听连接关闭事件 closeChan := make(chan bool) go func() { select { case <-closeChan: // 连接已关闭 log.Println("connection closed") } }() conn.SetCloseHandler(func(code int, text string) error { closeChan <- true return nil }) // 处理 WebSocket 消息 for { _, message, err := conn.ReadMessage() if err != nil { log.Println("read error:", err) closeChan <- true break } log.Printf("recv: %s\n", message) } } ``` 在上面的代码中,我们首先升级 HTTP 连接为 WebSocket 连接,然后创建一个通道 `closeChan` 来监听连接关闭事件。 在 `conn.SetCloseHandler()` 方法中,我们定义了一个回调函数来处理连接关闭事件。当客户端关闭连接时,该回调函数会将 `closeChan` 通道关闭,从而触发连接关闭事件。 在主循环中,我们使用 `conn.ReadMessage()` 方法读取客户端发送的消息。如果读取失败,说明连接已关闭,我们也需要将 `closeChan` 通道关闭,从而触发连接关闭事件。 以上就是一个简单的使用 `CloseNotify()` 方法检查 WebSocket 连接状态的示例代码。